失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【学习笔记-opencv透视变换】点的透视变换和图像透视变换

【学习笔记-opencv透视变换】点的透视变换和图像透视变换

时间:2024-06-26 07:10:18

相关推荐

【学习笔记-opencv透视变换】点的透视变换和图像透视变换

前言:在做项目的时候,用到了关于 “点” 的透视变换,查阅很多blog,发现大多数都是关于图的透视变换,所以特意记录一下,顺便把图片的透视变换代码贴到这里,方便大家查阅。

一、图的透视变换----得到透视后的图

我们在做图像处理的时候经常需要做透视变换得到鸟瞰图,在鸟瞰图上做处理,甚至根据需要还需要将透视后 处理过的图像再次的透视变换回去。这里简单粗暴的记录一下自己曾经学习的心路。重点:简单粗暴,快速上手,废话不多说,开始我的表演。

// 定义四个原始点cv::Point2f sourcePoints[4], objectPoints[4];sourcePoints[0].x = 567 - 10.; sourcePoints[0].y = 461.; //left_topsourcePoints[1].x = 692.; sourcePoints[1].y = 461.; //right_topsourcePoints[2].x = 369 - 10.; sourcePoints[2].y = 638; //left_bottomsourcePoints[3].x = 1058; sourcePoints[3].y = 638.; //right_bottom/// 定义四个目标点 或者说是你透视变换后图像的大小objectPoints[0].x = 50.; objectPoints[0].y = 15.;objectPoints[1].x = 276.; objectPoints[1].y = 15.;objectPoints[2].x = 50.; objectPoints[2].y = 610.;objectPoints[3].x = 276.; objectPoints[3].y = 610.// 透视变换矩阵transformMatrix = cv::getPerspectiveTransform(objectPoints, sourcePoints); //perspective matrixcv::warpPerspective(inputImage, inputImage, Matrix, Size(inputImage.rows/2, inputImage.cols/2), INTER_LINEAR); // 透视变换

效果图如下:

原图:鸟瞰图:

二、点的透视变换----得到透视后点的坐标

点的透视变换和图片的透视变换原理是一样的,具体代码如下:

//原始点sourcePoints[0].x = 567 - 10.; sourcePoints[0].y = 461.; //left_topsourcePoints[1].x = 692.; sourcePoints[1].y = 461.; //right_topsourcePoints[2].x = 369 - 10.; sourcePoints[2].y = 638; //left_bottomsourcePoints[3].x = 1058; sourcePoints[3].y = 638.; //right_bottom// 目标点objectPoints[0].x = 50.; objectPoints[0].y = 15.;objectPoints[1].x = 276.; objectPoints[1].y = 15.;objectPoints[2].x = 50.; objectPoints[2].y = 610.;objectPoints[3].x = 276.; objectPoints[3].y = 610.;std::vector<cv::Point2f> warpedLeftPoint; // 点为 cv::Point2f类型 我这里是一堆点cv::perspectiveTransform(points, warpedLeftPoint, transformMatrix); //点的透视变换,透视变换矩阵和图像透视变换矩阵一样

三、总 结

点的透视变换和图片的透视变换本质上是一样的,具体步骤都是一样的:

定义4个原始点和4个目标点。利用点的对应关系,求透视变换矩阵。根据透视变换矩阵得到透视变换后的点或者图像。

如果觉得《【学习笔记-opencv透视变换】点的透视变换和图像透视变换》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。