利用opencv识别文本
你好呀
首先安装好pycharm,我所使用的语言是python,并且利用Tesseract,安装的教程Tesseract OCR 安装过程_清都散闲客的博客-CSDN博客首先选择网站Tesseract User Manual | tessdocTesseract documentationhttps://tesseract-ocr.github.io/tessdoc/Home.html因为我需要的是windows,所以选择如下,可以根据自己的实际情况安排自己的下载内容:然后选择版本:下载之后自行安装。作者配合pycharm使用,后续增加识别文本的项目练习...https://blog.csdn.net/qq_41059950/article/details/122890276首先在pycharm中建立文件夹,点击在File中settings
在这里我们安装opencv-python,和pytesseract。到这一步,准备活动就基本完成了。
然后创建一个.py文件,开始我们的项目吧。
我默认你有一点点opencv的基础和python的基础。
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
#添加的是你的tesseract的绝对路径,还要加上他的exe执行文件
下面读取一张照片,只要包含英文字母和数字就可以,这个随你喜欢,我的是这个
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
print(pytesseract.image_to_string(img))cv2.imshow('img',img)
cv2.waitKey(0)
首先你可以通过pytesseract.image_to_string()函数,检测出图片上的英文字母和数字
其次我们可以通过函数pytesseract.image_to_boxes()打印出每个数字或者字母的坐标,为后续的步骤做准备。
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
print(pytesseract.image_to_boxes(img))cv2.imshow('img',img)
cv2.waitKey(0)
接下来先完成字符检测。我们要给识别出来的英文和数字加个方框。
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
#print(pytesseract.image_to_boxes(img))### Detecting Characters 检测字符
Himg,Wimg,_ = img.shape
boxes = pytesseract.image_to_boxes(img)
for box in boxes.splitlines():#print(box)box = box.split(' ')#print(box)x,y,w,h = int(box[1]),int(box[2]),int(box[3]),int(box[4])#坐标是以左下角为中心,所以下面计算坐标要换算cv2.rectangle(img,(x,Himg-y),(w,Himg-h),(0,0,255),2)cv2.putText(img,box[0],(x,Himg-y+20),cv2.FONT_HERSHEY_DUPLEX,1,(0,50,255),2)cv2.imshow('img',img)
cv2.waitKey(0)
这一步基本上没啥难度,就是在获取的坐标上做文章而已。
当然我们我们只完成这点操作是远远不够的,我们要识别单词
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
#print(pytesseract.image_to_boxes(img))### Detecting Words 检测单词
Himg,Wimg,_ = img.shape
boxes = pytesseract.image_to_data(img)
print(boxes)
for x,b in enumerate(boxes.splitlines()):#如果是单词被识别出来,会返回12个参数if x!=0:b = b.split()if len(b)==12:#判断是否返回的是单词,利用是否是十二个参数x,y,w,h = int(b[6]),int(b[7]),int(b[8]),int(b[9])cv2.rectangle(img, (x,y), (w+x, h+y), (0, 0, 255), 2)cv2.putText(img, b[11], (x,y), cv2.FONT_HERSHEY_DUPLEX, 1, (0, 50, 255), 2)cv2.imshow('img',img)
cv2.waitKey(0)
你也可以更改配置来自由的选择自己识别的是什么,比如说只识别数字,这是ome 和psm的具体参数代表的意思。
cong = r'--oem 3 --psm 6 outputbase digits'#添加命令
boxes = pytesseract.image_to_data(img,config=cong)
只需要在上面一个程序中增加和修改这些即可
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"img = cv2.imread('Rescources/textone.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#print(pytesseract.image_to_string(img))
#print(pytesseract.image_to_boxes(img))### Detecting Words 检测单词
Himg,Wimg,_ = img.shape
cong = r'--oem 3 --psm 6 outputbase digits'#添加命令
boxes = pytesseract.image_to_data(img,config=cong)
print(boxes)
for x,b in enumerate(boxes.splitlines()):if x!=0:b = b.split()if len(b)==12:#判断是否返回的是单词,利用是否是十二个参数x,y,w,h = int(b[6]),int(b[7]),int(b[8]),int(b[9])cv2.rectangle(img, (x,y), (w+x, h+y), (0, 0, 255), 2)cv2.putText(img, b[11], (x,y), cv2.FONT_HERSHEY_DUPLEX, 1, (0, 50, 255), 2)cv2.imshow('img',img)
cv2.waitKey(0)
ok,这次的小项目就到这里啦,下次见。
利用opencv识别文本相关推荐
- python如何实现找图_利用OpenCV和Python实现查找图片差异
使用OpenCV和Python查找图片差异 flyfish 方法1 均方误差的算法(Mean Squared Error , MSE) 下面的一些表达与<TensorFlow - 协方差矩阵&g ...
- 利用OpenCV、Python和Ubidots构建行人计数器程序(附完整代码)
作者 | Jose Garcia 译者 | 吴振东 校对 | 张一豪.林亦霖,编辑 | 于腾凯 来源 | 数据派(ID:datapi) 导读:本文将利用OpenCV,Python和Ubidots来编写 ...
- 利用OpenCV识别玻璃纤维织物劈缝缺陷
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 玻璃纤维织物是经编多轴向织物,由一层或多层平行的纱线按照尽可能多的 ...
- opencv resize_利用OpenCV 识别两张相似的图片
Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...
- 独家|OpenCV1.9 如何利用OpenCV的parallel_for_并行化代码(附代码)
翻译:陈之炎 校对:顾伟嵩本文约3200字,建议阅读7分钟本教程的目标是展示如何使用OpenCV的parallel_for_框架轻松实现代码并行化. 目标 本教程的目标是展示如何使用OpenCV的pa ...
- opencv 取roi_利用OpenCV 识别两张相似的图片
Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...
- 如何利用OpenCV寻找轮廓的中心?
简 介: 本文介绍了利用OpenCV和Python编程来计算形状轮廓的中心点.当然后面还会继续给出如何通过轮廓来分辨物体形状种类,以及对于各自的颜色进行标准. 关键词: OpenCV,contours ...
- 利用OpenCV读取和写入视频
简 介: 本文介绍了如何对三种不同的视频源(视频文件, 序列图片以及网络摄像头)来进行读取显示视频,使用视频捕获对象. 也给出了如何通过视频捕获对象获取视频流的重要元数据. 介绍了使用视频写入对象把视 ...
- python中import cv2遇到的错误及安装方法_独家利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码amp;解析)...
作者:Jose Garcia 翻译:吴振东 校对:张一豪 本文约4000字,建议阅读14分钟. 本文将利用OpenCV,Python和Ubidots来编写一个行人计数器程序,并对代码进行了较为详细的讲 ...
最新文章
- 计算机网络基础 — 网络设备 — 网桥(Bridge)
- 进一步考察与UI相关的安全漏洞-上
- .NET应用如何优雅的实现功能定时开关
- 二叉树题目----2 检查两颗树是否相同 和 对称二叉树的判定
- linux僵尸进程产生的原因以及如何避免产生僵尸进程defunct
- VS2005 .vs. Orcas
- 力压 MongoDB、Redis,PostgreSQL 蝉联“年度数据库”!
- 【亲测有效】无法定位链接器!请检查 tools\link.ini 中的配置是否正确的解决方案
- mysql中表结构语句_mysql中表数据与表结构复制语句
- C++_CopyConstructor(副本构造器 防止指针重复释放)
- openstack-O版-glance安装
- java applet介绍,Java Applet教程介绍
- 【玩转数据系列十五】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)
- 智慧公安大数据人工智能
- win10去掉快捷方式小箭头_强迫症狂喜!一招去除Win10桌面图标小箭头
- 【附源码】Java计算机毕业设计家政管理系统(程序+LW+部署)
- java把时间戳转换成时间_(转)java时间与时间戳互转
- 怎么记住1月-12月的英文
- [转] PID算法的解析()
- 英语语言能力测试软件,英语语言能力测试标准