http://nuigroup.com/?ACT=28&fid=27&aid=1892_H6eNAaign4Mrnn30Au8d
我正在使用下面的图像进行测试,绿色矩形显示感兴趣的区域.

我在想,如果有可能实现,我希望使用的简单组合的效果cv::getPerspectiveTransform和cv::warpPerspective.我正在分享我到目前为止所写的源代码,但它不起作用.这是结果图像:

因此,有一个vector<cv::Point>是定义感兴趣的区域,但点不存储在任何特定的顺序载体内,这件事情我不能在检测过程中发生改变.无论如何,稍后,向量中的点用于定义a RotatedRect,而这又用于组装cv::Point2f src_vertices[4];,所需的变量之一cv::getPerspectiveTransform().
我对顶点及其组织方式的理解可能是其中一个问题.我还认为使用a RotatedRect不是存储ROI原始点的最佳方法,因为坐标会稍微改变以适应旋转的矩形,这并不是很酷.
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
cv::Mat src = cv::imread(argv[1], 1);
// After some magical procedure, these are points detect that represent …Run Code Online (Sandbox Code Playgroud) 我给了一个平面(支持向量和平面的法向量),一个由我知道内在参数(fx,fy,cx,cy)的摄像机拍摄的图像.如何将此图像转换为鸟瞰图像(以便鸟类视图与平面的法线向量共线).我对我必须使用的坐标系很困惑,有些矩阵是世界坐标,有些是本地坐标.我知道warpPerspective()在OpenCV 中有这样做吗?
我正在使用OpenCV:2.4.9
非常感谢!
更新:
我必须在相机面向法线的情况下计算4个点,然后从鸟瞰图中计算4个点并将它们传递给它findHomography()以获得变换矩阵吗?
更新: 解决了.搞定了!