V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hunk
V2EX  ›  Python

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

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

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

    @gulullu 其实一直在研究,可以说照抄,目前还不能灵活运用,照猫画虎也不是事。
    lunaticus7
        12
    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
        13
    hunk  
    OP
       2016-07-07 22:02:09 +08:00
    @lunaticus7 谢谢,正在看 opencv ,了解下具体实现,打打基础再上手。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5437 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:26 · PVG 16:26 · LAX 00:26 · JFK 03:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.