需要头文件
#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;
}