首页 > 解决方案 > 为发票 ($xx.xx) 中的每个价格金额生成一个轮廓矩形,包括小数点

问题描述

我正在尝试使用应用于图像的以下内容从发票中分割出文本:

image = cv2.imread(im_path)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
rectKern = cv2.getStructuringElement(cv2.MORPH_RECT, (15,30))
squareKern = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
light = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, squareKern)
light = cv2.threshold(light, 0,255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) [1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (30,10))
light = cv2.morphologyEx(light, cv2.MORPH_CLOSE, kernel)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7,15)) 
light = cv2.morphologyEx(light, cv2.MORPH_OPEN, kernel)
light = cv2.morphologyEx(light, cv2.MORPH_CLOSE, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (30,10)))

但是,对于应该显示为单个白色矩形轮廓的价格(格式为 $xx.xx),我经常缺少两个不相交的白色矩形(因此不包括连接的小数点)。我不确定应该应用哪些转换来包含小数点,并且每个价格都有一个白色矩形(仍然保持不同行的价格分开)。我的代码生成了以下内容: 图像 轮廓

标签: pythonopencvcv2opencv-contourmathematical-morphology

解决方案


推荐阅读