如何用Python自动识别并裁剪含数字的浅色矩形区域?
图像预处理需求与现有实现情况
需求说明
我有一批相似图片,需要完成两项处理:
- 识别并裁剪出内部包含数字的浅色背景矩形区域
- 去除干扰线(该需求优先级较低)
最终要得到仅包含数字的浅色矩形图片,作为OCR的输入源。
现有代码与效果
线条检测代码(已实现)
目前已写出能识别图像线条并以绿色线条勾勒的代码:
import numpy as np import matplotlib.pyplot as plt import cv2 import sys # 读取输入图像 image = cv2.imread('OCRimgs/test2.jpg') # 转换为灰度图 grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 边缘检测 edges = cv2.Canny(grayscale, 30, 100) # 霍夫直线检测 lines = cv2.HoughLinesP(edges, 1, np.pi/180, 60, np.array([]), 50, 5) # 绘制检测到的直线 for line in lines: for x1, y1, x2, y2 in line: cv2.line(image, (x1, y1), (x2, y2), color=(20, 220, 20), thickness=3) # 显示图像 plt.imshow(image) plt.show()
这段代码会用绿色线条标记出图像中的所有检测到的线条。
OCR代码(已验证可用)
我正在开发OCR程序,处理后的图片需要输入到以下经过验证的OCR代码中:
import cv2 import pytesseract # from PIL import Image img = cv2.imread('small.png') try: t = pytesseract.image_to_string(img, lang='lets', config='--psm 6 tessedit_char_whitelist=0123456789') text = int(t.replace('\n', '').replace('\f', '')) print(text) except: print('Error processing image')
输入该OCR代码的图片必须是仅包含数字的浅色矩形样式。
待明确的实现思路
我考虑过利用矩形的浅色特征来识别目标区域,但不确定在固定相机固定拍摄位置的实际场景中是否可行,目前还没有明确完整的实现方案。
内容的提问来源于stack exchange,提问作者Anthony Kercher
相关产品推荐
相关产品推荐

