opencv透视变换函数,通过输入4个角点坐标实现透视变换

需要头文件

 

#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "imgproc/imgproc.hpp"
//
//函数功能:图片透视变换
//输入:   Mat src原图像 ,int p1x/y p2x/y p3x/y p4x/y对应左上,右上、左下、右下四个点的x\y坐标 ,
//输入:   int width,int height分别指转换后的图像宽、高
//输出:   透视变换后的图像
//

Mat transformmat(Mat src,int p1x,int p1y,int p2x,int p2y,int p3x,int p3y,int p4x, int p4y,int width,int height)
{
	Mat result;
	Point2f srcTri[4], dstTri[4];

	dstTri[0].x = 0;
	dstTri[0].y = 0;
	dstTri[1].x = width;
	dstTri[1].y = 0;
	dstTri[2].x = 0;
	dstTri[2].y = height;
	dstTri[3].x = width;
	dstTri[3].y = height;

	srcTri[0].x = p1x;
	srcTri[0].y = p1y;
	srcTri[1].x = p2x;
	srcTri[1].y = p2y;
	srcTri[2].x = p3x;
	srcTri[2].y = p3y;
	srcTri[3].x = p4x;
	srcTri[3].y = p4y;

	Mat transform = Mat::zeros(3, 3, CV_32FC1); //透视变换矩阵
	transform = getPerspectiveTransform(srcTri, dstTri);  //获取透视变换矩阵		
	warpPerspective(src, result, transform, Size(height+1,width+1));  //透视变换

	return result;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值