OpenCV杂谈_05
一. 需要做的前期准备
- 环境配置:
Python版本:3.9.0
功能包:opencv-python(4.5.2.52)
提前安装Tesseract_OCR工具,下载地址:http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe(切记:记录好Tesseract_OCR文件夹所安装的位置,作者这里为:C:\Program Files (x86)\Tesseract-OCR)
- 需要自行搜索想要识别的图像,作为input;或者实时检测的情况下调用摄像头也可
- 一个用的顺手的IDE(本人推荐Pycharm)
二. 源码如下
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe"
img = cv2.imread('english.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
hImg, wImg, _ = img.shape
boxes = pytesseract.image_to_boxes(img)
for box in boxes.splitlines():
box = box.split(' ')
print(box)
x1, y1, x2, y2 = int(box[1]), int(box[2]), int(box[3]), int(box[4])
cv2.rectangle(img, (x1, hImg - y1), (x2, hImg - y2), (0, 0, 255), 2)
cv2.putText(img, box[0], (x1, hImg - y1 - 90), cv2.FONT_ITALIC, 1, (50, 50, 255), 2)
cv2.imshow("Result", img)
cv2.waitKey(0)
三. 结果展示
- 非实时
- 实时
四. 感悟与分享
- 明显可以看出实时的检测结果很不稳定,且容易出错。
- 只对画面中字符的识别是远远不够的,需要做字符的联结(换句话说就是去主动地将字符做合理拼接成为单词),其实是有解决办法的,即使用pytesseract.image_to_data,但作者这里一直报错
Attribute Error:‘list’ object has no attribute 'read'
,且尚未解决,解决之后会第一时间进行更新。
- 参考课程及推荐:https://www.youtube.com/watch?v=6DjFscX4I_c(内容为英文,且需要)
如有问题,敬请指正。欢迎转载,但请注明出处。