Почему findHomography возвращает плохой результат?

Я позволил пользователю выбрать 5 точек на двух изображениях, которые не имеют одинаковый размер (возможно, в этом проблема).
Когда пользователь выбирает точку на любом изображении, я нажимаю Point2f вектор, посвященный этому конкретному изображению.

Итак, в одном случае у меня есть следующие данные:

1. Image 2 at x: 607, and y: 286
2. Image 2 at x: 750, and y: 367
3. Image 2 at x: 527, and y: 353
4. Image 2 at x: 752, and y: 469
5. Image 2 at x: 584, and y: 482

1. Image 1 at x: 301, and y: 343
2. Image 1 at x: 440, and y: 328
3. Image 1 at x: 275, and y: 472
4. Image 1 at x: 478, and y: 457
5. Image 1 at x: 389, and y: 597

тем не мение findHomohraphy возвращается

[0, 0, 0;

0, 0, 0;

0, 0, 0]

Это то, что делает моя функция, как только она получает 2 вектора с 4 точками.

Mat tranform( std::vector<cv::Point2f> src, std::vector<cv::Point2f> dst) {
transMatrix = findHomography(src, dst, CV_RANSAC);
std::cout << transMatrix << std::endl;
return transMatrix;
}

Я также попытался изменить аргумент метода findHomohraphy из 0 в CV_RANSAC,

Я отлаживаю немного дальше, и у меня возникают проблемы с печатью Point2f вектор. Возможно я не назначаю это правильно

Это то, что я сейчас делаю в функции обратного вызова окна изображения.

imgOnePoints.assign(imgOneIndex, Point2f(x,y));

1

Решение

Оказывается, я действительно не правильно назначил вектор

Я исправил это с помощью выполненного задания, используя push_back

imgOnePoints.push_back(Point2f(x,y));

Теперь я получаю следующий результат

[9.160730442076495, -1.849442562331516, -180.7111392985398;
4.977742556341154, 2.013216209765684, -1267.475935610038;
0.007750660030394876, -0.0003148605099947704, 0.9999999999999999]
0

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


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