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

利用透视变换实现文档矫正功能

透视变换是将成像投影到一个新的平面上,也称作投影映射。OpenCV通过函数cv2.getPerspectiveTransorm(pos1,pos2)构造矩阵M,其中pos1和pos2分别表示变换前后4个点的对应位置。得到M后再通过函数cv2.warpPerspective(src,M,(cols,rows))进行透视变换。


函数中的pos1表示:透视变换前4个点的对应位置。

函数中的pos2表示:透视变换后4个点对应位置。

cv2.warpPerspective(src,M,(cols,rows))

src:输入图像

M:透视变换矩阵


实现步骤

这里我用透视变换实现文档矫正功能,操作步骤如下:

1.获取输入图像

获取输入图像,输入图像如下,我们需要对该图进行矫正

 2.获得顶点坐标

利用鼠标点击获取纸张的4个点,这里用到cv2.setMouseCallback()函数,获取点位函数如下:

    def get_point(self, event, x, y, flags, image):
        if event == cv2.EVENT_LBUTTONDOWN:  # 检测左键点击事件
            if len(self.points) < 4:
                self.points.append((x, y))  # 存储点击的坐标
                print(f'{x},{y}')
                cv2.circle(image, (x, y), 5, (0, 255, 0), -1)
        if len(self.points) == 4:
            cv2.line(image, self.points[0], self.points[1], (0, 255, 0), 2)  # 逆时针画
            cv2.line(image, self.points[1], self.points[2], (0, 255, 0), 2)
            cv2.line(image, self.points[2], self.points[3], (0, 255, 0), 2)
            cv2.line(image, self.points[3], self.points[0], (0, 255, 0), 2)

效果如下图:

获得四个顶点坐标后,会把目标的轮廓绘制出来

3.文档矫正

下图为矫正后的效果图

 


 


http://www.kler.cn/news/359342.html

相关文章:

  • AUTOSAR_EXP_ARAComAPI的5章笔记(13)
  • iOS IPA上传到App Store Connect的三种方案详解
  • chat_gpt回答:python使用writearray写tiff速度太慢,有什么快速的方法吗
  • UML(Unified Modeling Language,统一建模语言)
  • 基于Neo4j的推理知识图谱展示:智能系统与图谱可视化
  • Go 1.19.4 命令调用、日志、包管理、反射-Day 17
  • Git的认识及基本操作
  • 基于IP的真实地址生成器
  • 2024-10-17 问AI: [AI面试题] 讨论 AI 的挑战和局限性
  • 深度学习:YOLO目标检测和YOLO-V1算法损失函数的计算
  • 030 elasticsearch查询、聚合
  • 【Java】多线程-thread类的常用方法和生命周期【主线学习笔记】
  • Go语言Gin框架的常规配置和查询数据返回json示例
  • 以openai的gpt3 5为例的大模型流式输出实现(原始、Sanic、Flask)- 附免费的key
  • 内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)
  • 是德E5063矢量网络分析仪使用(一)单端口校准
  • 数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年9月刊
  • champ模型部署指南
  • QT IEEE754 16进制浮点数据转成10进制
  • JavaScript 中的防抖和节流(简易版)