Python OCR: 利用Tesseract和OpenCV读取图像中黑色矩形坐标
Python OCR: 利用Tesseract和OpenCV读取图像中黑色矩形坐标
本文将介绍如何使用Python中的Tesseract OCR和OpenCV库,从图像中识别黑色矩形区域,提取其坐标并绘制矩形框。
准备工作
首先,确保已经安装了Tesseract和OpenCV库。可以使用以下命令进行安装:
pip install pytesseract opencv-python
代码示例
import cv2
import pytesseract
# 读取图像并转换为灰度图像
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对图像进行二值化处理,将黑色矩形变为白色,其他部分变为黑色
_, threshold = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 使用tesseract进行图像文本识别,找到黑色矩形的坐标
data = pytesseract.image_to_boxes(threshold)
rectangles = []
for line in data.splitlines():
_, x, y, w, h, _ = line.split(' ')
rectangles.append((int(x), int(y), int(w), int(h)))
# 在原始图像上绘制矩形框并显示
for (x, y, w, h) in rectangles:
cv2.rectangle(image, (x, y), (w, h), (0, 255, 0), 2)
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码解释
- 导入所需的库:
cv2用于图像处理,pytesseract用于文本识别。 - 读取图像并转换为灰度图像:使用
cv2.imread()读取图像,并使用cv2.cvtColor()将其转换为灰度图像。 - 对图像进行二值化处理:使用
cv2.threshold()将图像进行二值化,将黑色矩形变为白色,其他部分变为黑色。 - 使用
pytesseract.image_to_boxes()进行文本识别:该函数返回一个字符串,包含识别出的文本信息和每个字符的坐标。 - 提取黑色矩形的坐标:解析
pytesseract.image_to_boxes()返回的字符串,提取每个矩形的坐标并存储到rectangles列表中。 - 在原始图像上绘制矩形框:使用
cv2.rectangle()在原始图像上绘制每个识别出的矩形框,并使用cv2.imshow()显示最终的图像。
注意
- 确保将
image.jpg替换为实际图像的文件路径。 - 该方法可能无法识别所有黑色矩形,因为 Tesseract 的识别精度会受到图像质量的影响。
- 可以根据实际情况调整二值化阈值和矩形框的颜色和粗细。
原文地址: https://www.cveoy.top/t/topic/o1E5 著作权归作者所有。请勿转载和采集!