专栏首页微卡智享【干货】C++ OpenCV案例实战---卡号获取

【干货】C++ OpenCV案例实战---卡号获取

前言

前面我们学习了《【干货】C++ OpenCV案例实战---卡片截取(附代码)》,根据照出来的照片直接截取到卡片后,在卡片识别里面下一步我们肯定就会用到了卡号的获取

实现思路

从上一篇里面我们已经获取到卡号,如下图右边红框内的

当我们已经定位好卡片后,下一步我们就要获取卡号然后再进行识别了,理论上来说,我们通过上一步截取到卡片后,根据卡号在右下角开始偏移多少来获取卡号即可,如下图

通过右下角我们设置多少的偏移值后,然后找到起点设定一个固定的矩形大小,截取这一块即可实现卡号的截取,但是这会有个问题,如果我们第一步截取的有问题,因为背景的原因,造成下面截取的高度增加了,按这个固定的比例来获取就会有偏差,所以我考虑了另一种方案。

思路呢还是通过轮廓查找,我们可以看到,当卡号截取出来后,卡片内部的结构都是固定不变的,所以我们通过内部定位再偏移找卡号要比从右下角精确的多,如下图

通过获取到红色的特征这里,去偏移定位找绿色的框。

代码实现

我们接上次《【干货】C++ OpenCV案例实战---卡片截取(附代码)》的代码,在这个基础上我们进行处理。


用Canny边缘提取,转灰度图--高斯模糊--形态学闭操作--Canny边缘提取

显示效果

红框为处理后的结果


寻找轮廓,画出图中所有的轮廓来,我们看看

然后运行一下看看效果

可以看到右图里面画出了所有的找到的轮廓,我们怎么定位用蓝色线的那个区域了,通过分析了一下,我们可以看到有几个特点:

  1. 区域的长度超过了卡号长度的一半
  2. 区域形成的矩形的旋转值很低,可以忽略

修改查找区域的设置,条件为矩形长度在图片长度的一半,旋转度小于3

然后我们再重新运行一下看看

可以看出,我们直接就定位到了要找的区域。


根据固定区域进行偏移截取

我们根据最小矩形的中心点,进行了向后偏移50,向下偏移了20,做为矩形的左上角点,然后画了个长度为130,高度为20的矩形(这个偏移量需要多次测试后找到最佳的位置,当然找到后就不需要再更改了)

下面的我们运行的效果

可以看到,红框里我们把卡号直接全部截取出来了,这个截取完后就可以进行OCR等识别了,关于识别这块,后面等学会了后再来更新。


-END-

本文分享自微信公众号 - 微卡智享(VaccaeShare),作者:Vaccae

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL Server中With As的介绍与应用(二)--递归的使用

    前一篇《SQL Server中With As的介绍与应用(一)--With As的介绍》我们介绍了一下SQL中With As,在With As中还可以进行递归的...

    Vaccae
  • 学习|Android中实现进度条按钮功能(kotlin)

    前面几章做了检测TTS及怎么样进度条下载的文章,原想结合几个知识点做一个实战操作,模仿应用宝等手机助手的那种列表下载方式,计划中发现有一环是需要实现个一按钮进度...

    Vaccae
  • C++ OpenCV特征提取之基本的LBP特征提取

    LBP(Local binary pattern)是一个易理解且有效的局部图像特征,应用很广泛。它具有旋转不变性和灰度不变性的显著的有点。已经广泛的应用于纹理分...

    Vaccae
  • iCDO一周要闻:抖音及TikTok5月应用内购收入同比增长500%;微软删除人脸识别数据库;谷歌成为苹果默认搜索引擎

    6月11日 2019年BrandZ全球最具价值品牌100强排行榜 中国占据15个

    iCDO互联网数据官
  • TW洞见 | 微服务—大企业是如何在实践微服务中成长的

    文章作者来自ThoughtWorks:Imran Khan,译者来自ThoughtWorks:贺思聪。图片来自ThoughtWorks。 本文版权归【Thoug...

    ThoughtWorks
  • 百万锁仓都没有,你真的真的真的是来认真写作的吗?

    最近一直在劝币乎写作的朋友买KEY锁仓,结果买了没多久,KEY大涨50%,打电话给我讲好开心。

    凌帅出口
  • R语言与机器学习(分类算法)朴素贝叶斯算法

    前两个算法都被要求做出一个艰难的决定,给出数据所属分类的明确答案,但往往因为分类特征统计不足,或者分类特征选择有误导致了错误的分类结果,哪怕是训练集也有可能出...

    机器学习AI算法工程
  • Promise.all在统计WebHDFS时的使用

    3、对请求到的日志里的数据,分析、截取、分割操作 1)把结果导入数据库(按项目名、日期、项目id、死链、日志原始链接) 2)拼成html邮件格式(table...

    杨肆月
  • 科个普啦--遗传算法

    今天给大家说一个奇妙的算法,灵感来源于达尔文的进化论。 达尔文曾说,生物在地球上进化了这么多年,能生存下来的不是最强或最聪明的,而是最适合环境的生物。 而我们的...

    linxinzhe
  • Ubuntu 登陆循环启动 无法进入桌面 libGL error: failed to load driver: swrast

    1 环境变量导致的,进入tty1使用sudo vim profile or environment,将其还原,修正错误;

    zhangrelay

扫码关注云+社区

领取腾讯云代金券