使用 Python 和 OpenCV3 检测流程图中的文本区域
Posted
技术标签:
【中文标题】使用 Python 和 OpenCV3 检测流程图中的文本区域【英文标题】:Detect text regions in a flowchart using Python and OpenCV3 【发布时间】:2018-09-09 15:05:17 【问题描述】:我正在尝试识别包含文本的图像部分。为此,我首先使用 OpenCV (v.3) 来预处理图像,然后将矩形/框添加到文本部分。
我下面的代码确实报告了一些轮廓。请参阅下面的代码、输入图像和输出。
代码:
import os,sys,cv2,pytesseract
## IMAGE
afile = "test-small.jpg"
def reader(afile):
aimg = cv2.imread(afile,0)
print("Image Shape%s | Size:%s" % (aimg.shape,aimg.size))
return aimg
def boundbox(aimg):
out_path2 = "%s-tagged.jpg" % (afile.rpartition(".")[0])
ret,thresh = cv2.threshold(aimg,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
acount = 0
for contour in contours:
acount+=1
x, y, w, h = cv2.boundingRect(contour)
print("Coordinates",x,y,w,h)
if w < 100 and h < 100: ## Avoid tagging small objects i.e. false positives
continue
cv2.rectangle(aimg, (x, y), (x + w, y + h), (255, 0, 0), 8) ##
print("Total contours found:%s" % (acount))
cv2.imwrite(out_path2,aimg)
return out_path2
def main():
aimg = reader(afile)
bimg = boundbox(aimg)
if __name__ == '__main__':
main()
测试图片:
输出:
问题在于 (1) 矩形在图像上不可见并且 (2) 文本部分的检测不准确。如何改进上述代码以检测带有文本的部分?
感谢您的帮助。
巴德
【问题讨论】:
你的问题是什么?你的问题是什么?删除您的示例并将其替换为最小的示例。这信息太多了。 【参考方案1】:在应用阈值之前尝试调整图像大小。您还可以在应用轮廓之前尝试腐蚀和膨胀函数。
【讨论】:
以上是关于使用 Python 和 OpenCV3 检测流程图中的文本区域的主要内容,如果未能解决你的问题,请参考以下文章