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

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

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

//  定义四个原始点
cv::Point2f sourcePoints[4], objectPoints[4];
sourcePoints[0].x = 567 - 10.; sourcePoints[0].y = 461.; //left_top
sourcePoints[1].x = 692.; sourcePoints[1].y = 461.;  //right_top
sourcePoints[2].x = 369 - 10.; sourcePoints[2].y = 638;   //left_bottom
sourcePoints[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 matrix
cv::warpPerspective(inputImage, inputImage, Matrix, Size(inputImage.rows/2, inputImage.cols/2), INTER_LINEAR);  // 透视变换

效果图如下:
原图:在这里插入图片描述鸟瞰图:
居中

二、点的透视变换----得到透视后点的坐标
点的透视变换和图片的透视变换原理是一样的,具体代码如下:

//原始点
 sourcePoints[0].x = 567 - 10.; sourcePoints[0].y = 461.; //left_top
 sourcePoints[1].x = 692.; sourcePoints[1].y = 461.;  //right_top
 sourcePoints[2].x = 369 - 10.; sourcePoints[2].y = 638;   //left_bottom
 sourcePoints[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);  //点的透视变换,透视变换矩阵和图像透视变换矩阵一样

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

  1. 定义4个原始点和4个目标点。
  2. 利用点的对应关系,求透视变换矩阵。
  3. 根据透视变换矩阵得到透视变换后的点或者图像。
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值