OpenCV自带的warpPerspective()函数,可以根据透视变换参数实现从一幅图像到另外一幅图像之间的映射变换。OpenCV为了保证坐标的对应关系,在一些情况下,会对变换的图像进行裁剪,以至于不能显示图像全貌,如图1所示。这限制了其的一些应用。

为了使变换既能保持坐标对应,又能显示整幅图像,本文给出了中心化坐标表示下的映射关系实现。如图2所示。

图2,即带有坐标对应关系(以图像中心为原点的坐标系)又能显示整幅图像的Warp实现。
在使用Rect返回值时还可以得到图3结果。

图3,利用Rect返回值只得到有效区域的。
以上供大家参考选用。
Rect warpPerspectiveCenterlization(cv::InputArray src, cv::InputArray CM, cv::OutputArray dst)
{
Mat srcImg = src.getMat();
int W_2 = srcImg.cols / 2;
int H_2 = srcImg.rows / 2;
double coordX[] = { -W_2, W_2, W_2, -W_2 };
double

本文介绍了如何使用OpenCV的warpPerspective()函数实现透视变换,以解决图像变换后可能出现的裁剪问题,确保坐标对应且能显示整幅图像。通过中心化坐标表示,可以得到理想的映射效果,并提供了利用Rect返回值来获取有效区域的方法。
4260

被折叠的 条评论
为什么被折叠?



