OpenCV 变换整幅图像的warpPerspective()函数——中心化坐标表示

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

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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值