OpenCV+Python 文字识别(重点图像透视变换)

 1 # Author:Winter Liu is coming!
 2 import cv2 as cv
 3 import numpy as np
 4 import pytesseract
 5
 6
 7 # 预处理,高斯滤波(用处不大),4次开操作
 8 # 过滤轮廓唯一
 9 def contour_demo(img):
10     gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
11     gray = cv.GaussianBlur(gray, (5, 5), 1)
12     ref, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY)
13     kernel = np.ones((9, 9), np.uint8)
14     thresh = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel, iterations=4)
15     contours, hierachy = cv.findContours(thresh, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
16     print(len(contours))
17     return contours
18
19
20 def capture(img):
21     contours = contour_demo(img)
22     # 轮廓唯一,以后可以扩展
23     contour = contours[0]
24     # 求周长,可在后面的转换中使用周长和比例
25     print(cv.arcLength(contour,True))
26     img_copy = img.copy()
27     # 使用approxPolyDP,将轮廓转换为直线,22为精度(越高越低),TRUE为闭合
28     approx = cv.approxPolyDP(contour, 22, True)
29     # print(approx.shape)
30     # print(approx)
31     # cv.drawContours(img_copy, [approx], -1, (255, 0, 0), 15)
32     n = []
33     # 生产四个角的坐标点
34     for x, y in zip(approx[:, 0, 0], approx[:, 0, 1]):
35         n.append((x, y))
36     p1 = np.array(n, dtype=np.float32)
37     # 对应点
38     p2 = np.array([(0, 0), (0, 1500), (1000, 1500), (1000, 0)], dtype=np.float32)
39     M = cv.getPerspectiveTransform(p1, p2) # 变换矩阵
40     # 使用透视变换
41     result = cv.warpPerspective(img_copy, M, (0, 0))
42     # 重新截取
43     result = result[:1501, :1001]
44     cv.imwrite(r"C:\PycharmProjects\OpenCV\pic\ocr.png", result)
45     return result
46
47
48 # 图像识别代码,需要预先下载安装开源工具包 pytesseract,配置环境变量
49 # pip install pytesseract
50 # 修改“C:\Python\Python37\Lib\site-packages\pytesseract\pytesseract.py”中“cmd”为绝对路径
51 def ocr_img(img):
52     gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
53     # 图像清晰度越高结果越精确,时间更长
54     text = pytesseract.image_to_string(gray)
55     print(text)
56
57
58 src = cv.imread(r"C:\PycharmProjects\OpenCV\pic\page.jpg")
59 res = capture(src)
60 ocr_img(res)
61 cv.waitKey(0)
62 cv.destroyAllWindows()

原文地址:https://www.cnblogs.com/nmucomputer/p/12241439.html

时间: 2024-08-30 01:59:24

OpenCV+Python 文字识别(重点图像透视变换)的相关文章

树莓派 opencv Python 人脸识别

sudo apt-get update sudo apt-get upgrade sudo apt-get install python-opencv sudo apt-get install python-pip sudo apt-get install python-dev sudo pip install picamera 以上是安装环境(目前opencv 只支持python 2.7:更高版本运行会报"No module named 'cv2'" 错误)

如何精准实现OCR文字识别?

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 前言 2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识别--智能图像分享活动,活动举办期间用户耐心听分享嘉宾的介绍,并提出了相关的问题,智能图像团队的科学家和工程师也耐心解答可用户的疑问.以下就是活动分享的全部内容. 正文 在日常生活工作中,我们难免会遇到一些问题,比如自己辛辛苦苦写完的资料,好不容易打印出来却发现源文件丢了.难的收集了一些名片,却要很麻烦的

python中使用Opencv进行人脸识别

上一节讲到人脸检测,现在讲一下人脸识别.具体是通过程序采集图像并进行训练,并且基于这些训练的图像对人脸进行动态识别. 人脸识别前所需要的人脸库可以通过两种方式获得:1.自己从视频获取图像   2.从人脸数据库免费获得可用人脸图像,如ORL人脸库(包含40个人每人10张人脸,总共400张人脸),ORL人脸库中的每一张图像大小为92x112.若要对这些样本进行人脸识别必须要在包含人脸的样本图像上进行人脸识别.这里提供自己准备图像识别出自己的方法. 1.采集人脸信息:通过摄像头采集人脸信息,10张以上

python使用opencv实现人脸识别系统

1.首先安装过python环境,在这里就不过说    检测是否安装成功如下,在cmd中输入Python     2.安装numpy 现在开始安装numpy,打开cmd,输入pip install numpy 我的电脑已经安装过了,忘记截屏了.就在网上找了图片 测试是否成功 3.安装opencv 在官网自行下载,这里下载的是opencv2.4.10安装. ### (1)复制cv2.pyd 将"\opencv\build\python\2.7\x64"或"\opencv\buil

OpenCV Python教程(1、图像的载入、显示和保存)

本文转载自 OpenCV Python教程(1.图像的载入.显示和保存)     作者 Daetalus 本文是OpenCV  2 Computer Vision Application Programming Cookbook读书笔记的第一篇.在笔记中将以Python语言改写每章的代码. PythonOpenCV的配置这里就不介绍了. 注意,现在OpenCV for Python就是通过NumPy进行绑定的.所以在使用时必须掌握一些NumPy的相关知识! 图像就是一个矩阵,在OpenCV fo

给OCR文字识别软件添加图像的方法

ABBYY FineReader 12是一款OCR图片文字识别软件,而且强大的它现在还可使用快速扫描窗口中的快速打开.扫描并保存为图像或任务自动化任务,在没有进行预处理和OCR的ABBYY FineReader中扫描或打开图像.如果您的文档非常大,而您只需要识别其中的几个页面,就可以派上用场.下面小编将教大家ABBYY FineReader 12添加图像的技巧. 1. 在ABBYY FineReader 12色彩模式下拉列表中,选择全彩色或黑白模式.(注:当文档转换为黑白之后,您不能恢复彩色.)

OCR文字识别软件中怎么把图像转换成HTML

之前给大家介绍了使用OCR文字识别软件ABBYY FineReader Mac版将PDF转换成HTML文档(详见PDF转换成HTML文档首选ABBYY Mac),其实ABBYY FineReader无论Mac版还是Windows版都可以实现这一点,除此之外还可以将图像文件转换成HTML文档,本文具体讲讲这一功能. ABBYY FineReader是一款OCR图文识别软件,当前最新版本为ABBYY FineReader 12,可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜

Python人工智能之图片识别,Python3一行代码实现图片文字识别

1.Python人工智能之图片识别,Python3一行代码实现图片文字识别 2.tesseract-ocr安装包和中文语言包 注意: 原文地址:https://www.cnblogs.com/jycjy/p/8799295.html

图像文字识别(OCR)用什么算法小结

说明:主要考虑深度学习的方法,传统的方法不在考虑范围之内. 1.文字识别步骤 1.1detection:找到有文字的区域(proposal). 1.2classification:识别区域中的文字. 2.文字检测 文字检测主要有两条线,两步法和一步法. 2.1两步法:faster-rcnn. 2.2一步法:yolo.相比于两步法,一步法速度更快,但是accuracy有损失. 文字检测按照文字的角度分. 2.1水平文字检测:四个自由度,类似于物体检测.水平文字检测比较好的算法是2016ECCV乔宇