#c #opencv
#c #opencv
Вопрос:
Я разрабатываю приложение на OpenCV, и в Windows следующий код является допустимым и компилируется / работает:
/* Calculate the transformation points */
std::vector<cv::Point2f> img1;
std::vector<cv::Point2f> img2;
for( int i = 0; i < good_matches.size(); i ) {
img1.push_back( keypoints_imageOne[ good_matches[i].queryIdx ].pt );
img2.push_back( keypoints_imageTwo[ good_matches[i].trainIdx ].pt );
}
/* Generate the homogonous matrix from the transformation points */
cv::Mat H = cv::findHomography(img1, img2, CV_RANSAC);
Однако, когда я переключаюсь на мой Mac или Linux, я получаю сообщение об ошибке, в котором говорится, что для аргументов нет прототипа функции (как того требует прототип функции cv::Mat
вместо std::vector< cv::Point2f >
)
Итак, мой вопрос в том, как я могу / должен выполнять преобразование из std::vector < cv::Point2f >
в cv::Mat
или как мне поступить иначе?
Ответ №1:
Похоже, у вас более старая версия OpenCV в Linux. Я думаю, что возможность использовать векторы в качестве входных данных для функций OpenCV добавлена в версию 2.3.
Итак, счастливого обновления!
Комментарии:
1. Спасибо, только что обновлено, а также приведение к Mat (img1) устранило ошибку перед обновлением. 😀