使用cv2填充字符的空白

2024-04-25 09:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带文本的图像文件,我想用OCR提取。 但是它上面有一条对角线重叠的文本线(右上角),就像this。 我用

  image = cv2.imread(image_path)

  image = cv2.resize(image, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)

  image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

  image = cv2.GaussianBlur(image, (5, 5), 0)

  image = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY)[1] # 100 here as the diagonal line is grey

这将产生一个像this的图像。在

请注意剪切应力的粗体字符,它是对角线重叠的区域之一。 现在我应用OCR。但是,前面的步骤会删除一些像素。例如,ein边缘位错是不完整的。在

这会导致像“edve位错”这样的不良结果。我试过腐蚀和扩张,但没有明显改善。在

有什么方法可以填补字符的空白吗?在

有没有办法减少和对角线重叠的字符的粗细?在


Tags: pathimage文本none图像文件字符cv2ocr
1条回答
网友
1楼 · 发布于 2024-04-25 09:22:26

因为在图像中,我们可以表示从2^0=0到亮区域(白色)的深色区域(黑色)2^8=256。 所以有一件事你可以试试(我也不确定):
img = cv2.imread(image_path,0) new_img = img.copy() new_img[new_img<=230] = 0 ## just try to change that 230 value to anywhere b/w 150 to 230 然后尝试使用OCR检查它是否真的有效。在

在去除重叠后,将此应用于图像结果

相关问题 更多 >