当前位置: 首页 > news >正文

OpenCV几何图像变换(3)计算透视变换矩阵函数getPerspectiveTransform()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算四对对应点之间的透视变换。
该函数计算 3×3 的透视变换矩阵,使得:
[ t i x i ′ t i y i ′ t i ] = map_matrix ⋅ [ x i y i 1 ] \begin{bmatrix} t_i x'_i \\ t_i y'_i \\ t_i \end{bmatrix} = \texttt{map\_matrix} \cdot \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix} tixitiyiti =map_matrix xiyi1
其中,
d s t ( i ) = ( x i ′ , y i ′ ) , s r c ( i ) = ( x i , y i ) , i = 0 , 1 , 2 , 3 dst(i)=(x'_i,y'_i), src(i)=(x_i, y_i), i=0,1,2,3 dst(i)=(xi,yi),src(i)=(xi,yi),i=0,1,2,3

getPerspectiveTransform() 函数用于计算一个 3×3 的透视变换矩阵,该矩阵将源图像中的四边形映射到目标图像中的另一个四边形。这种变换可以实现图像的透视校正,例如将倾斜的图像拉直或调整视角。

函数原型1


Mat cv::getPerspectiveTransform
(InputArray 	src,InputArray 	dst,int 	solveMethod = DECOMP_LU 
)		

函数参数1

  • 参数src 源图像中四边形顶点的坐标。
  • 参数dst 目标图像中对应四边形顶点的坐标。
  • 参数solveMethod 传递给 cv::solve 函数的方法(DecompTypes 类型)。

函数原型2


Mat cv::getPerspectiveTransform
(const Point2f 	src[],const Point2f 	dst[],int 	solveMethod = DECOMP_LU 
)	

函数参数2

  • 参数src 源图像中四边形顶点的坐标。
  • 参数dst 目标图像中对应四边形顶点的坐标。
  • 参数solveMethod 传递给 cv::solve 函数的方法(DecompTypes 类型)。

示例代码

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{// 加载图像Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg");if (src.empty()){cout << "Error: Image not found." << endl;return -1;}// 定义源图像中的四个点Point2f srcQuad[4] = {Point2f(0, 0), Point2f(src.cols - 1, 0), Point2f(src.cols - 1, src.rows - 1), Point2f(0, src.rows - 1)};// 定义目标图像中的四个点Point2f dstQuad[4] = {Point2f(0, 0), Point2f(src.cols * 0.5, 0), Point2f(src.cols * 0.5, src.rows), Point2f(0, src.rows)};// 获取透视变换矩阵Mat perspMat = getPerspectiveTransform(srcQuad, dstQuad);// 应用透视变换Mat warpedImage;warpPerspective(src, warpedImage, perspMat, src.size());// 显示原图像和变换后的图像namedWindow("Original Image", WINDOW_NORMAL);imshow("Original Image", src);namedWindow("Warped Image", WINDOW_NORMAL);imshow("Warped Image", warpedImage);// 等待按键并关闭窗口waitKey(0);destroyAllWindows();return 0;
}

运行结果

在这里插入图片描述


http://www.mrgr.cn/news/2560.html

相关文章:

  • 西安旅游系统--论文pf
  • ElasticSearch 相关面试题
  • linux:进程空间的回收,exec族
  • 【大模拟】逻辑回环类
  • VirtualBox上的Oracle Linux虚拟机安装Docker全流程
  • Prompt——与AI连接的桥梁
  • 【SpringBoot】10 日志持久化(log4j2)
  • WordPress Transposh WordPress Translation SQL注入漏洞
  • linux出现sql密码被忘记的解决方法
  • 【6.0】axios的高级用法
  • Apache Flink 执行过程中的四层图详解
  • 邮票孔拼版制作方法
  • 黄山黄小徽光影乐园:思特科技打造沉浸式光影乐园解决方案,快乐指数拉满了!
  • C++ | Leetcode C++题解之第355题设计推特
  • 《Redis核心技术与实战》学习笔记5——内存快照RDB:宕机后,Redis如何实现快速恢复?
  • Excel
  • 手机设备IP地址切换:方法、应用与注意事项
  • [数据集][目标检测]铁轨缺陷检测数据集VOC+YOLO格式4020张4类别
  • 微服务的拆分原则及案例分析
  • Kafka基本概念介绍