cv :: findHomography gioving error c2665

时间:2012-10-30 18:33:16

标签: c++ opencv homography

我查看了这个给出的代码 http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html

//-- Localize the object
std::vector<Point2f> obj;
std::vector<Point2f> scene;

for( int i = 0; i < good_matches.size(); i++ )
{
    //-- Get the keypoints from the good matches
    obj.push_back( keypoints_object[ good_matches[i].queryIdx ].pt );
    scene.push_back( keypoints_scene[ good_matches[i].trainIdx ].pt );
}

Mat H = findHomography( obj, scene, CV_RANSAC );

所以很自然地我想以相同的方式将数据加载到findHomography中。 所以我的代码是

std::vector<cv::Point2f> srcPoints();
std::vector<cv::Point2f> dstPoints();

cv::Mat homography = cv::findHomography(srcPoints, dstPoints, CV_RANSAC);

但它给了我

  

1&gt; c:\ main.cpp(65):错误C2665:'cv :: findHomography':2个重载中没有一个可以转换所有参数类型   1 GT; c:\ opencv \ build \ include \ opencv2 \ calib3d \ calib3d.hpp(423):可能是'cv :: Mat cv :: findHomography(cv :: InputArray,cv :: InputArray,int,double,cv :: OutputArray )”   1 GT; c:\ opencv \ build \ include \ opencv2 \ calib3d \ calib3d.hpp(428):或'cv :: Mat cv :: findHomography(cv :: InputArray,cv :: InputArray,cv :: OutputArray,int,double) “   1 GT;在尝试匹配参数列表'(overloaded-function,overloaded-function,int)'   1 GT;   1&gt; Build FAILED。

如果我使用CV :: Mat而不是Vectors,它可以工作,但我不明白为什么样本中的格式不同,不应该工作。

1 个答案:

答案 0 :(得分:0)

您的矢量声明后不应该有括号。您的代码应为:

std::vector<cv::Point2f> srcPoints;
std::vector<cv::Point2f> dstPoints;

cv::Mat homography = cv::findHomography(srcPoints, dstPoints, CV_RANSAC);

我假设你遗漏了用点填充向量。否则,在通过findHomography之前执行此操作。您编写的代码将空向量作为参数传递。