我的问题与"Image Alignment (ECC) in OpenCV ( C++ / Python )" article相距不太远。
我还发现the following article关于面部对齐非常有趣,但比我的问题更复杂。
Wow! I can really go down the rabbit-hole.
我的问题更简单。
我有一个扫描过的文档,我将其视为“模板”。在这个模板中,我手动映射了我需要信息的像素区域:
area = (x1,y1,x2,y2)
x1<x2
,y1<y2
。
现在,这些区域很可能显而易见,对我的“模板”来说太具体了。
我想要从中提取数据的所有其他文件大多会移动一些未知数量,以便我们所需数据的真实区域为:
area = (x1 + ε1, y1 + ε2, x2 + ε1, y2 + ε2)
预先知道ε1, ε2
的地方。
但这些文件在此转变之外非常相似。
我想发现,理想情况下通过opencv,需要进行哪些翻译(暂时无视欧几里德)来“对齐”这些图像,以便移除我的ε
,移动我的区域,并直接解析我的数据。
我考虑过使用tesseract从文档中挖掘文本,然后从那里进行解析,但是有一些填充或空的复选框
包含有关我的问题的有意义的信息。
我目前用于裁剪图像的代码是:
from PIL import Image
img = Image.open(img_path)
area = area_lookup['key']
cropped_img = img.crop(area)
cropped_img.show()
附上了我的两个示例文件。
我的两张照片是:
我们可以假设我的第一张图片是我的“模板”。
正如您所看到的,这两个图像非常“相似”,但有一个略微移动(人为错误)。可能存在旋转更极端或图像偏移更多的情况。
我希望将图像2转换为尽可能与图像1对齐,然后从中解析数据。
真诚地感谢任何帮助。
非常感谢