【发布时间】:2019-12-10 02:10:57
【问题描述】:
我目前正在尝试通过检测文档右上角和左下角的 2 个大黑角来裁剪图像:http://www.suiteexpert.fr/AideProd/SalaireExpert/Images/Editions/aemapercu.png 我试图找到一种比深度学习 OCR 更简单的方法以获得更好的性能。
我尝试了一些不同的方法,例如检测颜色的变化,从文档的边缘开始检测从白色到黑色的变化。这似乎可行,但它首先检测到一些图像示例上的非常小的垂直文本:https://www.movinmotion.com/wp-content/uploads/2018/03/AEM-V5-MM-.jpg
这也会导致其他问题,因为我要分析的文档也可能是不同颜色的,也可能是扫描件或照片。
但是,这些文件将始终具有相同的内部形状和结构(这是一个标准化的行政文件)。
我希望得到您关于如何检测文档右上角和左下角的 2 个大黑角的反馈,这将允许我通过旋转和裁剪来处理和标准化图像。
from PIL import Image, ImageChops
def trim(im, border):
bg = Image.new(im.mode, im.size, border)
diff = ImageChops.difference(im, bg)
bbox = diff.getbbox()
if bbox:
return im.crop(bbox)
else:
# found no content
raise ValueError("cannot trim; image was empty")
提前感谢您的帮助!
【问题讨论】:
-
正如您所说的“这些文档将始终具有相同的内部形状和结构”,因此您可以尝试获取两个黑角的坐标,然后通过他们。我的方法是,正如您所说,每个文档都将使用相同的内部形状/格式,因此它们的大小/框架也将相同。如果他们是那么裁剪可能是要走的路
-
那么文档的内部结构是相同的,我的意思是这两个黑角里面是什么。但文档边缘的空白边距可能会有所不同。这就是为什么我不能只使用两个黑角的坐标,因为它们并不总是相同的。
标签: python-3.x image-processing python-imaging-library crop object-detection