使用opencv实现通过摄像头自动输入阿里云身份宝验证码

最近工作中开始使用opencv来做一些跟图像相关的机器学习项目,开始对图像处理产生浓厚的兴趣。搜索资料的时候偶然看到有一些使用opencv读取摄像头的小demo,在输入烦人的阿里云数加身份宝验证码的时候,突发奇想,为何不用摄像头自动识别验证码,实现快速输入。当然,出于学习目的可以用摄像头来输入,如果是公司里,追求短平快和稳定,直接对手机截屏进行识别才是正路。

说干就干,公司台式机没有摄像头,先买一个。19块的看上去有点low,太便宜的一个是担心容易坏,另外是担心拍出来字符不清晰。29的看上去还可以,
再加10块可以买个好看点的,跟公司的显示器气质比较搭。所以最终败了这个:
39.9块摄像头
避免广告嫌疑,牌子就不说了。
免驱,安装后到硬件管理器把音频禁用掉,反正只需要摄像头。

硬件到手,来列一下接下来我们需要完成的任务:

  1. 使用opencv获取到摄像头的图片
  2. 正确抠出我们需要识别的数字区域(ROI,region of interest)
  3. 用机器学习的方法,正确识别图片上的数字
  4. 起一个http服务,方便调用
  5. 写一个浏览器小脚本,自动调用我们的http识别服务获取到6位验证码。
    整体流程如下图
    流程图

opencv读取摄像头

我们的需求比较简单,从
http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html
这里找到的一个代码框架完全够用了。

开发的时候可以先从摄像头截取几张图来调试代码。这样图片是固定的,方便debug和调整参数。然后根据相机方向旋转图像。opencv没有直接旋转90度,180度这种函数,但是简单的组合transpose和flip可以实现。
图片

ROI识别

找到了几篇相关的文章,比如这篇。但是没有完整的代码,所以自己简单尝试一下吧。
基本思路是

步骤 对应的opencv函数
1.图片黑白二值化 cv2.cvtColor(image, cv2.COLOR_BGR2GRAY); cv2.threshold
2.找contours cv2.findContours
3.从contours框出对应的boundingBox
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值