Python+OpenCV库实现对倾斜图片的校正

这篇具有很好参考价值的文章主要介绍了Python+OpenCV库实现对倾斜图片的校正。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、设计思路

二、编程步骤

三、代码实现

四、测试结果

总结


前言

        本实验旨在利用OpenCV库实现对倾斜图片的校正,并通过鼠标交互方式选择图片的边界点,以便进行透视变换和图像裁剪,代码简洁,适合初学者参考学习。


一、设计思路

        首先,我们需要读取一张倾斜的图片,并将其显示在屏幕上。然后,我们使用鼠标交互的方式选择图片的边界点,以便计算透视变换矩阵。在获取足够数量的边界点坐标后,我们可以使用OpenCV的cv2.getPerspectiveTransform()函数计算透视变换矩阵,并使用cv2.warpPerspective()函数将原始图片应用透视变换矩阵,得到校正后的图像。最后,根据校正后的图像中的实际内容,我们可以选择对图像进行裁剪,以去除不需要的部分。

二、编程步骤

  1.         (1)导入所需的库。在Python中,你可以使用OpenCV库来进行图像处理和透视变换。因
  2. 此,首先需要导入OpenCV库。
  3.         (2)读取倾斜的图片。使用OpenCV的cv2.imread()函数读取图片,并将其存储为一个图像对象。
  4.       (3)显示图片并等待鼠标事件。使用OpenCV的cv2.imshow()函数显示图片,并使用cv2.setMouseCallback()函数设置鼠标回调函数,以便在鼠标点击事件发生时获取边界点的坐标。
  5.          (4)获取边界点坐标。在鼠标点击事件发生时,回调函数会被触发,可以通过回调函数中提供的参数来获取鼠标点击的坐标。在这个步骤中,你可以使用一个列表来存储每个边界点的坐标。        
  6.         (5)计算透视变换矩阵。在获取足够数量的边界点坐标后,使用OpenCV的cv2.getPerspectiveTransform()函数计算透视变换矩阵。这个函数接受源点和目标点的坐标,并返回一个3x3的变换矩阵。
  7.         (6)应用透视变换矩阵。使用OpenCV的cv2.warpPerspective()函数将原始图片应用透视变换矩阵,得到校正后的图像。这个函数接受原始图片、透视变换矩阵和输出图像的大小作为参数,并返回一个转换后的图像。
  8.         (7)裁剪校正后的图像。根据校正后的图像中的实际内容,你可以选择对图像进行裁剪,以去除不需要的部分。可以使用OpenCV的图像切片操作来实现裁剪。
  9.         (8)显示和保存校正后的图像。使用OpenCV的cv2.imshow()函数显示校正后的图像,并使用cv2.imwrite()函数将校正后的图像保存到本地文件中。
  10. 三、代码实现

  11. import cv2
    import numpy as np
    #读取图像
    img = cv2.imread('D:/Users/Desktop/python/mmexport1603882179174.jpg')
    cv2.imshow('Original Image', img)
    
    points = []
    #定义鼠标回调函数
    def mouse_click(event, x, y, flags, param):
        if event == cv2.EVENT_LBUTTONDOWN:
            points.append([x, y])
            cv2.circle(img, (x, y), 5, (0, 255, 0), -1)
    #绑定鼠标回调函数
    cv2.namedWindow('Original Image')
    cv2.setMouseCallback('Original Image', mouse_click)
    #循环检测按键
    while True:
        cv2.imshow('Original Image', img)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    #判断边界点数量是否为4
    if len(points) != 4:
        print('Please select exactly 4 points.')
        exit()
    
    src_points = np.float32(points)
    dst_points = np.float32([[0, 0], [500, 0], [500, 500], [0, 500]])
    #进行透视变换
    M = cv2.getPerspectiveTransform(src_points, dst_points)
    warped_img = cv2.warpPerspective(img, M, (500, 500))
    
    cv2.imshow('Warped Image', warped_img)
    cv2.waitKey(0)
    # 继续显示原始图像
    cv2.imshow('Original Image', img)
    cv2.waitKey(0)
    
    cv2.destroyAllWindows()
  12. 四、测试结果

  13. python 图片处理曲面校正,机器视觉,python,opencv,开发语言


总结

        本文使用Python和OpenCV库实现对倾斜图片的校正,并通过鼠标交互方式选择图片的边界点,以便进行透视变换和图像裁剪。最终可以得到一张校正后的图片,其中包含了原始图片中需要保留的内容,同时去除了不需要的部分,提高了图片的质量和可用性,欢迎讨论交流。文章来源地址https://www.toymoban.com/news/detail-831939.html

到了这里,关于Python+OpenCV库实现对倾斜图片的校正的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像处理中Gamma校正的原理和实现算法——Python

    图像处理中Gamma校正的原理和实现算法——Python 在图像处理中,Gamma校正是一种用于调整图像亮度的常见技术。本文将介绍Gamma校正的原理和实现方法,并提供Python代码示例进行演示。 一、Gamma校正的原理 Gamma校正是通过对图像像素值进行幂函数变换来调整图像亮度的技术。

    2024年02月10日
    浏览(26)
  • MATLAB图像倾斜校正算法实现:图像倾斜角检测及校正

    在本文中,随着多媒体技术的不断发展,数码相机,高清拍照手机等多媒体设备己经在人们的生活中占据了越来越重要的地位 ( 点击文末“阅读原文”获取完整 代码数据 ) 。 通过采用图像处理技术,可以将数码设备采 集到的文字、图片等信息转化成其他信息形势输出,例

    2024年02月04日
    浏览(69)
  • OpenCV for Python 入坑第二天 :图片处理(1)

    上一篇博客我们简单了解了一下如何打开图片、保存图片、创建窗口等等。那么今天我们就来尝试一下完成OpenCV基础操作——图像的处理 图像处理是指对数字图像进行操作和改变其外观、属性或质量的技术和方法。它涉及到数字图像的获取、存储、传输和处理等各个方面。图

    2024年02月16日
    浏览(24)
  • 在 Python 中使用 OpenCV 通过透视校正转换图像

    在计算机视觉和图像处理领域,透视变换是一个强大的工具。它允许我们改变图像的视角以获得新的视点,通常用于校正扭曲或模拟不同的相机角度。本文将探讨一个 Python 脚本,该脚本使用计算机视觉领域流行的 OpenCV 库对图像执行透视变换。我们将详细介绍该脚本的工作原

    2024年01月25日
    浏览(34)
  • opencv进行双目标定以及极线校正 python代码

    参考博客 OpenCV相机标定全过程 [OpenCV实战]38 基于OpenCV的相机标定 opencv立体标定函数 stereoCalibrate() 将打印的结果保存到标定文件中即可 参考博客 机器视觉学习笔记(8)——基于OpenCV的Bouguet立体校正 小白视角之Bouguet双目立体校正原理 校正前 左图 右图 校正后

    2024年02月11日
    浏览(27)
  • 基于OpenCV-Python的图像位置校正和版面分析

    使用opencv对图像进行操作,要求:(1)定位银行票据的四条边,然后旋正。(2)根据版面分析,分割出小写金额区域。 首先是对图像的校正 读取图片 对图片二值化 进行边缘检测 对边缘的进行霍夫曼变换 将变换结果从极坐标空间投影到笛卡尔坐标得到倾斜角 根据倾斜角对

    2024年01月19日
    浏览(30)
  • OpenCV图片校正

    遇到偏的图片想要校正成水平或者垂直的。 对于倾斜的图片通过矫正可以得到水平的图片。一般有如下几种基于opencv的组合方式进行图片矫正。 1、傅里叶变换 + 霍夫变换+ 直线 + 角度 + 旋转 2、边缘检测 + 霍夫变换 + 直线+角度 + 旋转 3、四点透视 + 角度 + 旋转 4、检测矩形轮

    2024年02月12日
    浏览(30)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果 一、简单介绍 二、简单给视频添加水印图片效果实现原理 三、简单给视频添加水印图片效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语

    2024年04月25日
    浏览(42)
  • Python 结合opencv实现图片截取和拼接

    python 3.6.2 scikit-build-0.16.7 win10 opencv_python-4.5.4.60-cp36-cp36m-win_amd64.whl 下载地址: https://pypi.org/project/opencv-python/4.5.4.60/#files https://files.pythonhosted.org/packages/57/6c/7f4f56b2555d5c25dd4f41fc72a16dc6402cb2b4f967da11d8d26c669b55/opencv_python-4.5.4.60-cp36-cp36m-win_amd64.whl 注意:下载时不用下abi版的,比如 o

    2024年02月08日
    浏览(33)
  • Python+Kivy+OpenCV实现图片定位和匹配

    在本文中,我们将介绍如何使用Kivy和OpenCV库来构建一个简单的图片定位工具。这个工具可以帮助您在一张大图片中找到与模板图片匹配的位置,并将匹配结果以矩形框的形式显示出来。 首先,我们需要安装Kivy和OpenCV库。Kivy是一个开源的Python库,用于开发多点触摸应用程序。

    2024年02月21日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包