cv :: findHomography gioving error c2665

Я посмотрел на этот код, который дает
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> c: \ main.cpp (65): ошибка C2665: ‘cv :: findHomography’: ни одна из двух перегрузок не может преобразовать все типы аргументов
1> c: \ opencv \ build \ include \ opencv2 \ calib3d \ calib3d.hpp (423): может быть ‘cv :: Mat cv :: findHomography (cv :: InputArray, cv :: InputArray, int, double, cv: : OutputArray)»
1> c: \ opencv \ build \ include \ opencv2 \ calib3d \ calib3d.hpp (428): или ‘cv :: Mat cv :: findHomography (cv :: InputArray, cv :: InputArray, cv :: OutputArray, int, двойной)»
1> при попытке сопоставить список аргументов ‘(перегруженная функция, перегруженная функция, int)’
1>
1> Сборка не удалась.

Это работает, если я использую CV :: Mat вместо Векторов, но я не понимаю, почему тот же формат, что и в примере, не должен работать.

1

Решение

У вас не должно быть скобок после ваших векторных объявлений. Ваш код должен читать:

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

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

Я предполагаю, что вы пропустили заполнение векторов точками. В противном случае, сделайте это до того, как findHomography, Ваш код, как написано, передает пустые векторы в качестве аргументов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]