为什么findHomography返回不良结果?

时间:2014-10-15 12:40:01

标签: c++ opencv perspectivecamera

我让用户在两张不同尺寸的图像上挑选5个点(可能就是问题)。 当用户在任何一张图像上选择一个点时,我正在推送Point2f专用于该特定图像的矢量。

因此,在一个实例中,我有以下数据:

1. Image 2 at x: 607, and y: 286
2. Image 2 at x: 750, and y: 367
3. Image 2 at x: 527, and y: 353
4. Image 2 at x: 752, and y: 469
5. Image 2 at x: 584, and y: 482

-

1. Image 1 at x: 301, and y: 343
2. Image 1 at x: 440, and y: 328
3. Image 1 at x: 275, and y: 472
4. Image 1 at x: 478, and y: 457
5. Image 1 at x: 389, and y: 597

但是findHomohraphy会返回

[0, 0, 0;

 0, 0, 0;

 0, 0, 0]

这是我的函数在获得4个点的2个向量后所做的事情。

Mat tranform( std::vector<cv::Point2f> src, std::vector<cv::Point2f> dst) {
     transMatrix = findHomography(src, dst, CV_RANSAC);
     std::cout << transMatrix << std::endl;
     return transMatrix;
}

我还尝试将findHomohraphy的方法参数从0更改为CV_RANSAC

我正在进一步调试,我在打印Point2f向量时遇到问题。也许我没有正确分配

这就是我目前在图像窗口回调函数中所做的事情。

imgOnePoints.assign(imgOneIndex, Point2f(x,y));

1 个答案:

答案 0 :(得分:0)

原来我真的没有正确分配矢量

我使用push_back

通过已实施的作业修复了它
imgOnePoints.push_back(Point2f(x,y));

现在我得到以下结果

[9.160730442076495, -1.849442562331516, -180.7111392985398;
  4.977742556341154, 2.013216209765684, -1267.475935610038;
  0.007750660030394876, -0.0003148605099947704, 0.9999999999999999]