广告
返回顶部
首页 > 资讯 > 后端开发 > Python >opencv实现文档矫正
  • 464
分享到

opencv实现文档矫正

2024-04-02 19:04:59 464人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了OpenCV实现文档矫正的具体代码,供大家参考,具体内容如下 原始文档 矫正后文档 思路: 只要获得倾斜文档的倾斜角度,然后通过仿射变化旋转一下就可以实现矫正

本文实例为大家分享了OpenCV实现文档矫正的具体代码,供大家参考,具体内容如下

原始文档

矫正后文档

思路:

只要获得倾斜文档的倾斜角度,然后通过仿射变化旋转一下就可以实现矫正了,这里获取倾斜角度的方法有两个,下面分别介绍

1、利用霍夫变换,文档内容都是平行的,首先利用利用霍夫变换检测直线,然后将所有直线的平均倾斜角度当做文档的倾斜角度,最后再进行仿射变换就可以了。

import cv2
import numpy as np
def imshow(img):
    cv2.imshow("img",img)
    cv2.waiTKEy(0)
    cv2.destroyAllwindows()
img = cv2.imread("2.png",1)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
img2 = img.copy()
img_canny = cv2.Canny(img,75,200) 
img_line = cv2.HoughLines(img_canny,1,np.pi/180,280)
average = 0
for line in img_line: 
    for rho,theta in line:
        average = average + theta 
average = average / len(img_line)
angel = average/np.pi * 180 - 90
def rotateImg(img,angel):
    rows, cols = img.shape
    M = cv2.getRotationMatrix2D(((cols - 1) / 2.0, (rows - 1) / 2.0), angel, 1)  # 旋转中心x,旋转中心y,旋转角度,缩放因子
    img = cv2.warpAffine(img, M, (cols, rows),borderValue = (255,255,255))  #在内存里完成了旋转
    imshow(img)
rotateImg(img2,angle)

2、求文档内容的最小包围矩形。首先检测轮廓,利用形态学操作求mask,然后再检测轮廓,求最下包围矩形,最小包围矩形会返回一个倾斜角度(度数,霍夫变换的倾斜角度是弧度制),可以对轮廓进行筛选,将面积最大的轮廓的倾斜角度作为文档的倾斜角度,然后做仿射变换。

import cv2
import numpy as np
def imshow(img):
    cv2.imshow("img",img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
img = cv2.imread("2.png",1)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
img2 = img.copy()
imgth = cv2.threshold(img,0,255,cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)[1]
kernel = np.ones((17,17))
img_open = cv2.morphologyEx(imgth,cv2.MORPH_CLOSE,kernel,10)
# imshow(img_open)
cons = cv2.findContours(img_open,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)[0]
areas = []
for con in cons:
    area = cv2.contourArea(con)
    areas.append(area)
index = areas.index(max(areas))
# 度数形式,霍夫变换的返回值是弧度制
rect = cv2.minAreaRect(cons[index])
angle = rect[2]
mat = cv2.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),angle,1)
img_fin = cv2.warpAffine(img,mat,(img.shape[1],img.shape[0]),borderValue = (255,255,255))
imshow(img_fin)

补充:

利用仿射变换实现图像旋转指定度数

mat = cv2.getRotationMatrix2D(center,angle,c) (center: 旋转中心,angle:旋转角度,c:缩放大小)
img_final = cv2.warpAffine(img,mat, (img.shape[1],img.shape[0]), borderValue = (255,255,255)) (borderValue为可选参数,填充色,默认为黑色)

另外旋转指定90,180,270可以使用transpose、flip来实现

旋转90度(顺时针)
img = cv2.transpose(img)
res_img = cv2.flip(img,1)

旋转180度
img = cv2.flip(img,0)
img = cv2.flip(img,1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: opencv实现文档矫正

本文链接: https://www.lsjlt.com/news/119782.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • opencv实现文档矫正
    本文实例为大家分享了opencv实现文档矫正的具体代码,供大家参考,具体内容如下 原始文档 矫正后文档 思路: 只要获得倾斜文档的倾斜角度,然后通过仿射变化旋转一下就可以实现矫正...
    99+
    2022-11-11
  • 怎么用C++ OpenCV实现文档矫正功能
    这篇文章主要介绍了怎么用C++ OpenCV实现文档矫正功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用C++ OpenCV实现文档矫正功能文章都会有所收获,下面我们一起来看看吧。需...
    99+
    2023-06-29
  • opencv+python实现图像矫正
    本文实例为大家分享了opencv+python实现图像矫正的具体代码,供大家参考,具体内容如下 需求:将斜着拍摄的文本图像进行矫正 python代码 import numpy as ...
    99+
    2022-11-11
  • OpenCV实现透视变换矫正
    本文实例为大家分享了OpenCV实现透视变换矫正的具体代码,供大家参考,具体内容如下 演示结果参考: 功能实现:运行程序,会显示图片的尺寸,按回车键后,依次点击需矫正的图片的左上、...
    99+
    2022-11-13
  • Python OpenCV实现任意角度二维码矫正
    目录前言一般图片矫正方式二维码图片矫正思路编码实现前言 那天听到领导他们在讨论,说要将图片进行个矫正处理,还叫来了算法部的大佬来讨论将要如何处理这个,讨论场面很是激烈 不得不说好奇心...
    99+
    2022-11-11
  • C++OpenCV实战之图像透视矫正
    目录前言一、图像预处理二、轮廓提取1.提取最外轮廓2.提取矩形四个角点3.将矩形角点排序三、透视矫正四、源码前言 本文将使用OpenCV C++ 进行图像透视矫正。 一、图像预处理 ...
    99+
    2022-11-12
  • OpenCV如何通过透视变换实现矫正图像
    这篇“OpenCV如何通过透视变换实现矫正图像”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenCV如何通过透视变换实现...
    99+
    2023-07-05
  • OpenCV怎么通过透视变换实现矫正图像
    这篇“OpenCV怎么通过透视变换实现矫正图像”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenCV怎么通过透视变换实现...
    99+
    2023-07-05
  • 深入探讨opencv图像矫正算法实战
    摘要 在机器视觉中,对于图像的处理有时候因为放置的原因导致ROI区域倾斜,这个时候我们会想办法把它纠正为正确的角度视角来,方便下一步的布局分析与文字识别,这个时候通过透视变换就可以取...
    99+
    2022-11-12
  • pythonopencv实现图像矫正功能
    本文实例为大家分享了python opencv实现图像矫正的具体代码,供大家参考,具体内容如下 问题简介 一般的我们对图像中的目标进行分析和检测时,往往目标具有一定的倾斜角度,自然环...
    99+
    2022-11-11
  • PythonOpenCV图像矫正的原理实现
    目录题目描述基本思路核心代码题目描述 目录hw1下的图像是一些胶片的照片,请将其进行度量矫正。 推荐流程:采用Canny算子,检测边缘点;采用Hough直线检测,根据边缘点检测胶片边...
    99+
    2022-11-11
  • Python+OpenCV实战之实现文档扫描
    目录1.效果展示2.项目准备3.代码的讲解与展示4.项目资源5.项目总结与评价1.效果展示 网络摄像头扫描:   图片扫描:  最终扫描保存的图片: &n...
    99+
    2022-11-11
  • OpenCV实现倾斜文字校正
    基于OpenCV的倾斜文字校正,供大家参考,具体内容如下 使用OpenCV里example中的的倾斜文本作为输入,本文的目的即将该倾斜的文本校正成水平方向的文本。 主要思路为: 读取...
    99+
    2022-11-13
    OpenCV倾斜文字校正 OpenCV倾斜校正 OpenCV文字校正
  • OpenCV实现相机校正
    本文实例为大家分享了OpenCV实现相机校正的具体代码,供大家参考,具体内容如下 1. 相机标定 根据张正友校正算法,利用棋盘格数据校正对车载相机进行校正,计算其内参矩阵,外参矩阵和...
    99+
    2022-11-12
  • opencv实现图像校正
    本文实例为大家分享了opencv实现图像校正的具体代码,供大家参考,具体内容如下 1.引言:python实现倾斜图像校正操作 2.思路流程: (1)读入,灰度化;(2)高斯模糊;(3...
    99+
    2022-11-11
  • 使用pythonopencv对畸变图像进行矫正的实现
    代码: __Author__ = "Shliang" __Email__ = "shliang0603@gmail.com" import os import cv2 import...
    99+
    2022-11-11
  • python中opencv实现图片文本倾斜校正
    本项目为python项目需要安装python及python的opencv模块:opencv_python-4.0.1-cp37-cp37m-win32.whl 和 python的矩阵...
    99+
    2022-11-12
  • opencv实现图像倾斜校正
    本文实例为大家分享了opencv实现图像倾斜校正的具体代码,供大家参考,具体内容如下 今天的任务是如图这两种情况,我现在的情况是和如图一样的,左图左边倾斜一点儿,那么我需要把左边压...
    99+
    2022-11-13
    opencv图像倾斜校正 opencv图像校正 opencv倾斜校正
  • C++OpenCV实战之文档照片转换成扫描文件
    目录一、背景二、基础知识三、方案一:自动检测点1、读取图片文件(进行了指定尺寸缩放)2、创建直线类并计算两条直线的交点3、图像边缘检测Canny4、通过霍夫变换进行直线检测5、求单应...
    99+
    2022-11-13
  • OpenCV实现相机校正的方法
    这篇文章主要介绍OpenCV实现相机校正的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下1. 相机标定根据张正友校正算法,利用棋盘格数据校正对车载相机进行校正,计算其内参矩阵,外参矩阵和畸变系数。标定...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作