Python 从扫描图像中删除水平线

Python 从扫描图像中删除水平线,python,image-processing,imagemagick,ocr,Python,Image Processing,Imagemagick,Ocr,在Imagemagick中尝试了很好的形态学,但不幸的是,输出也会影响文本,因此无法满足ocr的要求。那么,有没有更快的方法可以在不影响ocr文本的情况下删除图像中的行呢 输入图像: Imagemagick代码: magick 1sa.jpg -morphology close:1 "1x4: 0,1,1,0" result.png 输出图像 编辑:感谢所有回复的人。我最终通过以下代码使其工作: magick E:\1sa.jpg ( +clone -thresho

在Imagemagick中尝试了很好的形态学,但不幸的是,输出也会影响文本,因此无法满足ocr的要求。那么,有没有更快的方法可以在不影响ocr文本的情况下删除图像中的行呢

输入图像:

Imagemagick代码:

magick 1sa.jpg -morphology close:1 "1x4: 0,1,1,0" result.png            
输出图像

编辑:感谢所有回复的人。我最终通过以下代码使其工作:

magick E:\1sa.jpg ( +clone -threshold 50% -negate -statistic median 219x1 ) -compose lighten -composite E:\z1.jpg

您的ImageMagick命令错误,甚至不应该工作。您需要使内核成为一条水平线而不是垂直线,并且内核需要一条更长的线。请尝试以下操作:

magick 1sa.jpg -morphology bottomhat "20x1:0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0" -negate result.png  


根据需要调整内核长度以优化结果。

此ImageMagick命令在结果中是否更好

convert 1sa.jpg -morphology bottomhat "20x3:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" -negate result.png  

请阅读。显示图像、代码、实际结果、预期结果“有没有更快的方法…”我更关心的是一种工作方式。。。显然,变形操作不适用于这种情况——不在计算机附近,但这有帮助吗?谢谢,它可以工作:)但是有没有一种方法可以填充文本附近的1个白色像素,这是因为删除了行,以提高ocr的准确性?我不知道。ImageMagick如何知道被删除的线条部分不是线条,而是角色的一部分。旁白:如果我以前的答案是有帮助的,请考虑给它一个上升的时间,你需要从新的StAcExpCup用户中投票提问,这样他们就有足够的分数来支持你的答案……-)不,它不起作用,我的意思是我想要输出图像,这样ocr就不会检测到文本附近的白色像素(肉眼可以看到)。谢谢你的帮助:)背景是白色的。我怎么知道你说的白色像素是什么意思呢?很抱歉没有正确解释,我把那些白色像素恢复为红色[1]:你可以试试-形态学打开菱形:1或正方形:1。但我怀疑这会填补你不想要的其他地方。或者创建自己的内核形状,以捕获这些白色像素。不幸的是,删除与角色相交的长水平线将删除角色的一部分,因为它不知道该线穿过角色。