Python OpenCV透视变换详解:从坐标获取到代码实现

今天早睡
今天早睡
发布时间:2026-10-15 | 3人浏览过
原创

本文详解Python OpenCV中透视变换的实现方法。通过获取图像关键点的坐标,利用cv2.warpPerspective函数将倾斜区域校正为平行视图。文章包含完整的坐标获取技巧、9行核心代码解析及效果展示,帮助开发者快速掌握图像几何变换技术。

准备工作

在右侧新建的项目中右键,选择Python File创建一个新的Python文件。在文件开头import cv2导入cv2库,import numpy并将numpy库重命名为np以便后续调用。

import cv2
import numpy as np

需要明确OpenCV中的坐标系规则:x轴向右延伸,y轴向下延伸,坐标原点位于左上角。例如,处理一张宽640像素、高480像素的图片时,需遵循此坐标定义。接下来开始具体学习。

场景描述

任务目标是:从任意图像中分割出指定区域,并以指定尺寸显示。分割后的图像在线性空间中应与显示窗口保持平行。例如,若原图中字母K呈倾斜状态,分割显示后应调整为竖直站立。实现这一效果的方法如下。

在实现上述效果前,需获取关键信息,即图中扑克牌K的四个顶点坐标。可使用画图工具打开图片,将鼠标悬停在分割区域的四个角点上,即可读取对应的坐标数据。

由于画图工具中的图像宽高坐标轴与OpenCV一致,当鼠标指向K的左上角时,画图工具左下角显示的数值为(734像素,185像素),这即为该点的坐标值。

透视变换

虽然上述要求看似复杂,但借助cv2库实现仅需9行代码。

  • 首先设置输出图片的宽度width为250,高度height为350。
  • 接着读取图片,即前述示例图片。
  • 定义目标区域的四个点坐标,顺序分别为左上、右上、左下、右下。这些坐标已在之前的步骤中获取。
  • pst2表示输出图片在图像框中的位置,采用平铺方式,此为固定写法。
  • 调用库函数warpPerspective执行透视变换,有兴趣者可深入研究其数学原理。
  • 最后输出并显示变换前后的两张图像。
width,height=250,350
img=cv2.imread("Resources/poker.jpg")
pst1=np.float32([[734,185],[1101,266],[621,679],[1030,789]])
pst2=np.float32([[0,0],[width,0],[0,height],[width,height]])
matrix=cv2.getPerspectiveTransform(pst1,pst2)
imgOutput=cv2.warpPerspective(img,matrix,(width,height))

cv2.imshow("Image",img)
cv2.imshow("Output",imgOutput)
cv2.waitKey(0)

查看效果:左图为透视变换后的结果,右图为原始图像。

本节内容实用且有趣,生活中应用广泛。俗话说眼过千遍不如手过一遍,请动手编写代码验证效果。

至此,关于Python OpenCV透视变换的实现讲解完毕。如需了解更多相关Python OpenCV透视变换内容,请搜索本站历史文章或继续浏览后续文章,感谢支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表