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()

代码解释

  1. 导入所需的库:cv2 用于图像处理,pytesseract 用于文本识别。
  2. 读取图像并转换为灰度图像:使用 cv2.imread() 读取图像,并使用 cv2.cvtColor() 将其转换为灰度图像。
  3. 对图像进行二值化处理:使用 cv2.threshold() 将图像进行二值化,将黑色矩形变为白色,其他部分变为黑色。
  4. 使用 pytesseract.image_to_boxes() 进行文本识别:该函数返回一个字符串,包含识别出的文本信息和每个字符的坐标。
  5. 提取黑色矩形的坐标:解析 pytesseract.image_to_boxes() 返回的字符串,提取每个矩形的坐标并存储到 rectangles 列表中。
  6. 在原始图像上绘制矩形框:使用 cv2.rectangle() 在原始图像上绘制每个识别出的矩形框,并使用 cv2.imshow() 显示最终的图像。

注意

  • 确保将 image.jpg 替换为实际图像的文件路径。
  • 该方法可能无法识别所有黑色矩形,因为 Tesseract 的识别精度会受到图像质量的影响。
  • 可以根据实际情况调整二值化阈值和矩形框的颜色和粗细。

原文地址: https://www.cveoy.top/t/topic/o1E5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录