求大神指导,小弟万分感谢!
#include
#include
#include
using namespace cv;
using namespace std;
#define WINDOW_NAME1 "【原始图窗口】" //为窗口标题定义的宏
#define WINDOW_NAME2 "【经过perspective后的图像】" //为窗口标题定义的宏
int main( )
{
Point2f srcTriangle[3];//定义两组点,代表两个四边形
Point2f dstTriangle[3];
Mat rotMat( 3, 3, CV_32FC1 );//定义一些Mat变量
Mat warpMat( 3, 3, CV_32FC1 );
Mat srcImage, dstImage;
srcImage = imread( "picture.jpg", 1 );//加载源图像并作一些初始化
if(!srcImage.data ) { printf("读取图片错误,请确定目录下是否有imread函数指定的图片存在~! \n"); return false; }
dstImage = Mat::zeros( srcImage.rows, srcImage.cols, srcImage.type() );// 设置目标图像的大小和类型与源图像一致
srcTriangle[0] = Point2f( 403, 189 );//设置源图像和目标图像上的四组点以计算透视变换
srcTriangle[1] = Point2f( 610, 202 );
srcTriangle[2] = Point2f( 382, 370 );
srcTriangle[3] = Point2f( 617, 379 );
dstTriangle[0] = Point2f( 320, 240);
dstTriangle[1] = Point2f( 640, 240);
dstTriangle[2] = Point2f( 320, 480);
dstTriangle[3] = Point2f( 640, 480);
warpMat = getPerspectiveTransform( srcTriangle, dstTriangle );
perspectiveTransform( srcImage, dstImage, warpMat );
imshow( WINDOW_NAME1, srcImage );
imshow( WINDOW_NAME2, dstImage );
waitKey(0);
return 0;
}