我查看了这个给出的代码 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,它可以工作,但我不明白为什么样本中的格式不同,不应该工作。
答案 0 :(得分:0)
您的矢量声明后不应该有括号。您的代码应为:
std::vector<cv::Point2f> srcPoints;
std::vector<cv::Point2f> dstPoints;
cv::Mat homography = cv::findHomography(srcPoints, dstPoints, CV_RANSAC);
我假设你遗漏了用点填充向量。否则,在通过findHomography
之前执行此操作。您编写的代码将空向量作为参数传递。