news 2026/7/11 10:21:19

【Opencv】透视变换python实现效果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Opencv】透视变换python实现效果
  1. 原始图片(即需要变换的图片)

  2. 透视变换代码

# -*- coding:utf-8 -*-importcv2importnumpyasnpimportmatplotlib.pyplotasplt# 计算透视变换参数矩阵defcal_perspective_params(img,points):# 设置偏移点。如果设置为(0,0),表示透视结果只显示变换的部分(也就是画框的部分)offset_x=100offset_y=100img_size=(img.shape[1],img.shape[0])src=np.float32(points)# 透视变换的四个点dst=np.float32([[offset_x,offset_y],[img_size[0]-offset_x,offset_y],[offset_x,img_size[1]-offset_y],[img_size[0]-offset_x,img_size[1]-offset_y]])# 透视矩阵M=cv2.getPerspectiveTransform(src,dst)print(M)# 透视逆矩阵M_inverse=cv2.getPerspectiveTransform(dst,src)print(M_inverse)returnM,M_inverse# 透视变换defimg_perspect_transform(img,M):img_size=(img.shape[1],img.shape[0])returncv2.warpPerspective(img,M,img_size)defdraw_line(img,p1,p2,p3,p4):points=[list(p1),list(p2),list(p3),list(p4)]# 画线img=cv2.line(img,p1,p2,(0,0,255),3)img=cv2.line(img,p2,p4,(0,0,255),3)img=cv2.line(img,p4,p3,(0,0,255),3)img=cv2.line(img,p3,p1,(0,0,255),3)returnpoints,imgif__name__=='__main__':# 观察图像像素大小,便于手动选点img=cv2.imread('book.jpg')plt.figure()plt.imshow(img)plt.show()# 选取四个点,分别是左上、右上、左下、右下points,img=draw_line(img,(208,320),(798,315),(160,1308),(1011,1230))cv2.imshow('test01',img)cv2.waitKey(0)cv2.imwrite('test01.png',img)M,M_inverse=cal_perspective_params(img,points)trasform_img=img_perspect_transform(img,M)# 观察透视图像像素大小plt.figure()plt.imshow(trasform_img)plt.show()cv2.imshow('test02.png',trasform_img)cv2.waitKey(0)cv2.imwrite('test02.png',trasform_img)
  1. 选中透视区域(确定四个坐标点)

  2. 透视效果

  3. 透视变换原理
    可参考:https://blog.csdn.net/zchang81/article/details/73409974

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 10:19:13

TMC7300与PIC18F65K40构建高效直流电机控制系统

1. 项目背景与核心器件选型有刷直流电机(BDC)在工业控制、消费电子和自动化设备中广泛应用,但传统驱动方案常面临效率低、控制精度差和稳定性不足的问题。本项目采用TMC7300电机驱动芯片与PIC18F65K40微控制器组合,构建了一套高性…

作者头像 李华
网站建设 2026/7/11 10:17:54

LabVIEW实现4位LFSR伪随机序列发生器:原理与工程实践

15个时钟周期,4个触发器,1个异或门——这就是伪随机序列的"最小实现单元"。掌握它,你就掌握了扩频通信、密码算法、测试激励的底层密码。📖 阅读导览项目内容阅读时间约7分钟适用人群数字系统工程师 / 通信算法开发者 /…

作者头像 李华
网站建设 2026/7/11 10:17:48

基于Godot引擎的交互式Git学习系统:可视化与游戏化设计

1. 项目概述 “Oh My Git!”这个项目名,一听就带着点俏皮和亲切感,它本质上是一个基于Godot引擎构建的交互式Git学习系统。作为一名在游戏开发和工具开发领域摸爬滚打多年的老手,我第一眼看到这个标题,脑子里立刻浮现出几个关键词…

作者头像 李华
网站建设 2026/7/11 10:17:11

Vibe Coding工程化:用FastAPI+Pydantic构建可版本化Prompt接口

1. 项目概述:为什么“Vibe Coding”不是玄学,而是工程能力的显性化表达“Vibe Coding”这个词最近在技术社区里被反复提起,但很多人把它理解成一种靠直觉、靠氛围、靠运气的编程方式——仿佛只要调对了Prompt,AI就能自动写出可上线…

作者头像 李华
网站建设 2026/7/11 10:15:16

STM32F745ZG与TLA2518构建高精度数据采集系统

1. 项目背景与核心需求在工业自动化、医疗设备和消费电子等领域,模拟信号到数字信号的可靠转换一直是关键环节。TLA2518作为德州仪器推出的12位1MSPS八通道ADC,配合STM32F745ZG这款高性能ARM Cortex-M7微控制器,能够构建高精度、高可靠性的数…

作者头像 李华