C/C++ 图像处理(12)------图像の透视变换

来源:互联网 发布:java调用scala 编辑:程序博客网 时间:2024/05/22 03:50

   图像的透视变换,在图像处理中经常被用到,本篇文章用以记录相关的一些算法研究和内容。由于作者近期比较忙,暂时只是记录了用OpenCV如何实现该算法,后续会加上相关的内容。

#include <opencv2/opencv.hpp>#include <opencv2/legacy/legacy.hpp>using namespace cv;int main(){    //读入待处理图像    Mat image = imread("矫正后图像.jpg");    Mat drcimage;    //创建透视变换之后的图像    drcimage = Mat::zeros(image.rows, image.cols, image.type());    //描述透视变换的四个点    Point2f srcTri[4];//源图像点    Point2f dstTri[4];//目标图像点    //源坐标    srcTri[0] = Point2f(1040, 1155);    srcTri[1] = Point2f(1345, 1177);    srcTri[2] = Point2f(1118, 962);    srcTri[3] = Point2f(1358, 975);    //目标坐标    dstTri[0] = Point2f(1040, 1155);    dstTri[1] = Point2f(1345, 1177);    dstTri[2] = Point2f(1066, 878);    dstTri[3] = Point2f(1372, 900);    //求得透视变换矩阵    Mat transform = getPerspectiveTransform(srcTri, dstTri);    //透视变换    warpPerspective(image, drcimage, transform, drcimage.size());    //完成,显示和保存图像    imshow("Image", drcimage);    imwrite("保存图像.jpg", drcimage);    waitKey();    return 0;}
1 0