如何在 OpenCV 中使用预定义的单应矩阵扭曲图像?
How to warp image with predefined homography matrix in 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));
现在我得到系统 NullReferenceException,你知道为什么会失败吗?
好的,我在 OpenCV 论坛上得到了帮助,我的 H 声明是这样的
cv::Mat H;
这对于函数 fingHomography 来说没问题,但是当我想手动添加值时,我必须这样声明 H:
cv::Mat H(3, 3, CV_64FC1);
我正在尝试将预定义值设置为单应性,然后使用函数 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));
现在我得到系统 NullReferenceException,你知道为什么会失败吗?
好的,我在 OpenCV 论坛上得到了帮助,我的 H 声明是这样的
cv::Mat H;
这对于函数 fingHomography 来说没问题,但是当我想手动添加值时,我必须这样声明 H:
cv::Mat H(3, 3, CV_64FC1);