OpenCV std ::vector в cv::Mat

#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) устранило ошибку перед обновлением. 😀