Opencv-python 如何将 A4 纸上的身份证复印件提取并剪裁下来?

2016-06-25 19:01:54 +08:00
 hunk
很多复印件要处理,想写个程序自动化,但 opencv 掌握太少。
9453 次点击
所在节点    Python
13 条回复
qiu0130
2016-06-25 19:18:00 +08:00
不是 PIL 么?
windfarer
2016-06-25 19:23:46 +08:00
熟读 opencv 文档即可, Image Segmentation
knightdf
2016-06-25 20:05:13 +08:00
如果是同一个位置的话根本不需要 opencv
tscat
2016-06-25 20:22:20 +08:00
边缘检测?或者直接减去另一张纯白纸的?我也就略微接触下。
hunk
2016-06-25 22:31:43 +08:00
@knightdf 有些是先复印在 a4 纸上,然后扫描的,主要处理这种类型的。
@windfarer 谢谢提示,我看到的是提取边缘,没然后了,想来还是要深入研究下其它算法之类的。
@tscat 是要边缘检测,但问题是从 a4 白纸中提取身份证,相当于是 a4 边缘后再次提取身份证的边缘。
canautumn
2016-06-26 00:29:16 +08:00
边缘检测算子、然后横纵投影(求和)即可。因为证件坐标边缘信息明显比纸的边缘多、所以可以根据峰值找到证件坐标,最后根据情况决定是否需要旋转等,可以用哈夫变换寻找直线来计算需旋转的角度。。。基本是大一图像处理作业水平
xenme
2016-06-26 08:01:04 +08:00
这个没难度了,白纸,黑色图像。
1. 随便选个阈值,二值化
2. 根据黑色拟合出身份证边缘
3. 求边缘焦点得到四个角
4. 提取
都不用库自己就搞定了。
身份证这么规则的,太好处理了
loading
2016-06-26 10:26:14 +08:00
模板匹配
russj
2016-06-26 10:48:27 +08:00
segment 前要处理一下
gulullu
2016-06-26 12:39:16 +08:00
最近正好也在搞这个,这个是 Python 的: https://gist.github.com/scturtle/9052852
hunk
2016-06-26 20:19:56 +08:00
@canautumn 记下了,感觉需要先研究下 opencv 的实现原理等,否则还不能灵活应用。

@xenme 555 ,没有图像处理的经验,所以无处下手。

@gulullu 其实一直在研究,可以说照抄,目前还不能灵活运用,照猫画虎也不是事。
lunaticus7
2016-06-27 12:32:39 +08:00
有几条路线可选:
surf + pattern matching
主要函数: surf findHomography
普适性强,做好了可以实现复杂场景下识别,如果没做过 cv 的话,优化较难

line detection
可以参考 M$的一篇论文: Whiteboard Scanning and Image Enhancement
ps.可以先用手机下载个 office lens 试试效果

去噪 二值化 开闭运算 最小外接矩形
随便找个 opencv 教程,看下形态学那一部分就行


三种路线实现难度递减、泛化能力递减
你场景比较简单,去做第三种就可以了,比较简单,也好理解

ps.有哥们翻译过 opencv 的 python 文档,你可以去找找
hunk
2016-07-07 22:02:09 +08:00
@lunaticus7 谢谢,正在看 opencv ,了解下具体实现,打打基础再上手。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX