Как деформировать изображение с предварительно определенной матрицей гомографии в OpenCV?

Я пытаюсь установить предопределенные значения для гомографии, а затем использовать функцию warpPerspective, которая будет искажать мое изображение. Сначала я использовал функцию findHomography и показал результат:

H = findHomography(obj, scene, CV_RANSAC);

for( int i=0; i<H.rows; i++){
for( int j=0; j<H.cols; j++){
printf("H: %d %d: %lf\n",i,j,H.at<double>(i,j));
}
}

warpPerspective(image1, result, H, cv::Size(image1.cols + image2.cols, image1.rows));

Это работает как положено, и я получаю эти значения

введите описание изображения здесь

После этого я попытался установить значения для H и вызвать warpPerspective следующим образом:

H.at<double>(0, 0) = 0.766912;
H.at<double>(0, 1) = 0.053191;
H.at<double>(0, 2) = 637.961151;
H.at<double>(1, 0) = -0.118426;
H.at<double>(1, 1) = 0.965682;
H.at<double>(1, 2) = 3.405685;
H.at<double>(2, 0) = -0.000232;
H.at<double>(2, 1) = 0.000019;
H.at<double>(2, 2) = 1.000000;

warpPerspective(image1, result, H, cv::Size(image1.cols + image2.cols, image1.rows));

И теперь я получаю System NullReferenceException, у вас есть какие-либо идеи, почему это не удается?

1

Решение

Хорошо, я получил помощь на форуме OpenCV, моя декларация H была такой

cv::Mat H;

это было нормально для функции fingHomography, но когда я хотел добавить значения вручную, мне пришлось объявить H следующим образом:

cv::Mat H(3, 3, CV_64FC1);
0

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

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

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