文档章节

opencv+python 机读卡识别之试错(一)模板匹配的数字识别

Digimon
 Digimon
发布于 2017/07/09 20:24
字数 544
阅读 50
收藏 0
点赞 0
评论 0

这里是效果不好的系列,但可能还是有丁点启示作用。效果好的系列:https://my.oschina.net/u/3268732/blog/1236298

图像来源于第四部分的数字,用任意截图工具截取部分图像当作模板,比如这样: 模板示例

将模板与图像对比,这个方法根据matchTemplate函数只能选出整幅图里最匹配的图像,并不能找出所有,若想找出所有,必须不断切割图片。单一图片识别方法:

#读入模板图片
template0=cv2.imread('E:\PyProgramma\pyImg\SummerTrain\source\img0\\1.jpg',0)
w, h = template.shape[::-1]
'''
matchTemplate函数参数选择:
'cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR',  
'cv2.TM_CCORR_NORMED', '*cv2.TM_SQDIFF', '*cv2.TM_SQDIFF_NORMED'
后两个区别在于返回坐标信息不太一样
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:  
  top_left = min_loc  
else:  
  top_left = max_loc  
  bottom_right = (top_left[0] + w, top_left[1] + h)  
  cv2.rectangle(img,top_left, bottom_right, 255, 2) 
'''
res = cv2.matchTemplate(img, template, cv2.TM_CCORR_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
 # 左上角顶点
topleft = min_loc
# 右下角顶点
bottom_right = (topleft[0] + w, topleft[1] + h)
# 在图里绘制矩形
cv2.rectangle(img, topleft, bottom_right, (0, 0, 255), -1)
cv2.imshow('t',img)
cv2.waitKey(0)
print(topleft,bottom_right,min_val, max_val)

若想得到所有相似图片,则需要切图,像这样:

#testnumx存的是图像框框中竖线分割的横坐标
for i in range(len(testnumx)-1):
        #用来存储最大可能性
        pro=[]
        #对图像进行分割
        tempimg=img[y1num[0]:y1num[1],testnumx[i]:testnumx[i+1]]
        print(testnumx[i+1]-testnumx[i])
        #这里没写好,应该转成图像序列就对了……
        pro.append(templatematch(tempimg,template0))
        pro.append(templatematch(tempimg, template1))
        pro.append(templatematch(tempimg, template2))
        pro.append(templatematch(tempimg, template3))
        pro.append(templatematch(tempimg, template4))
        pro.append(templatematch(tempimg, template5))
        pro.append(templatematch(tempimg, template6))
        pro.append(templatematch(tempimg, template7))
        pro.append(templatematch(tempimg, template8))
        pro.append(templatematch(tempimg, template9))
        pro.append(templatematch(tempimg, templatex))
        #输出最有可能的数字
        print(pro.index(max(pro)))

这种方法做出来效果不太理想,可能模板加上边框会好些……方法很局限,可以用一个数字包含多个模板的方式来解决推广的问题,但随着模板数量的增加实际上已经变成了一种机器学习的方法……所以还不如直接机器学习……

© 著作权归作者所有

共有 人打赏支持
Digimon
粉丝 40
博文 17
码字总数 14810
作品 0
成都
程序员
北京中安未来电子护照阅读器(最新版本)

一、产品描述: 北京中安未来电子护照阅读器是一款外形轻巧美观的证件识读设备,它配备高清500万像素成像系统,采用TH-OCR技术可识别多种身份证件。可识读符合国际民航组织ICAO DOC 9303标准...

wenzuoyong123 ⋅ 04/23 ⋅ 0

关于机器识别或图像识别的问题求助?

把机读卡扫描成图片,通过对图片的处理,得到学生的得分。尽管有现成的机读卡,但是这个卡是定制的,所以只有通过自己做识别了,但是还没有思路,求大家集思广益。

小昭归来 ⋅ 2017/02/17 ⋅ 2

G20峰会 人脸识别三大技术--广州颜鉴信息科技

2016年百度世界大会开幕,其百度创始人李彦宏在会上发表了“人工智能”为主题的演讲,并推出最新产品“百度大脑”让参展人员眼前一亮,其图像识别能力非常突出,人脸识别概率已经高达97%;G...

colorreco ⋅ 2016/09/12 ⋅ 0

OCR学习及tesseract的一些测试

最近接触OCR,先收集一些资料,包括成熟软件、SDK、流行算法。 1. 一个对现有OCR软件及SDK的总结,比较全面,包括支持平台、编程语言、支持字体语言、输出格式、相关链接等 http://en.wikipe...

狼人2007 ⋅ 2017/12/24 ⋅ 0

py3+tensorflow+opencv基于深度学习制作人脸识别系统学习历程(持续更新)

3.15 开始项目学习历程 。 有面向对象和面向过程编程的基础开始了人工智能的学习,以后每天都会报告工作任务和好的资源分享以及学习体会 1. 关于人脸识别系统 https://www.cnblogs.com/gbin...

qq_34465787 ⋅ 03/15 ⋅ 0

数据稀疏问题(data sparseness)

模式匹配:这个模型最早是针对机器的模式识别而提出来的,后来被用来解释人的模式识别。它的核心思想是认 为在人的长时记忆中,贮存着许多各式各样的过去在生活中形成的外部模式的袖珍复本。...

曾赛 ⋅ 2011/04/02 ⋅ 0

人脸识别的主要方法---小伙子拿去撸吧

人脸识别技术的主要研究方法 目前在国内和国外研究人脸识别的方法有很多,常用的方法有:基于几何特征的人脸识别方法、基于代数特征的人脸识别方法、基于连接机制的人脸识别方法以及基于三维...

colorreco ⋅ 2016/09/13 ⋅ 0

ABBYY FineReader 12能用在那些场所

ABBYY FineReader是ABBYY最新推出的一款OCR文字识别软件,能够快速准确地将纸质文件、PDF格式及数字或移动电话图像转换成可编辑格式— Microsoft® Word、Excel®、PowerPoint®、可检索的P...

ABBYY ⋅ 2015/11/25 ⋅ 0

主题:人脸检测原理及示例(OpenCV+Python)

发表时间:2009-09-06 < > 猎头职位: 北京: ITeye网站诚聘社区编辑 OpenCV库的简介 OpenCV+Ruby构建图像处理研究平台 python django opencv 脸部识别的小游戏 更多相关推荐 Python 前言 关于...

晨曦之光 ⋅ 2012/05/28 ⋅ 0

[无聊转]验证码识别远离原理

笔记本硬盘坏了,数据没了,盘里面的数据价值肯定超过联想数据恢复的RMB1500高价,不过当时身五分银,还是算了。。。 新硬盘需要重装很多东西,今晚在群里看到给宿舍评分的给力投票,网址上的...

阿莱倪士 ⋅ 2014/02/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

HiSDP —— 高效的C++软件开发平台

目前阿里集团每天有近1000PB的数据是通过LogAgent采集的,为了让LogAgent做到资源占用节省和高效采集,背后是基于HiSDP去构建的。 缘由 当决定采用C++编程语言去开发一个软件时,紧接着所面临...

阿里云云栖社区 ⋅ 28分钟前 ⋅ 0

zookeeper-3.4.12 下载与安装教程

一、zookeeper下载地址 http://mirrors.hust.edu.cn/apache/zookeeper/ 二、启动教程 把压缩包放在指定目录下 第三: 进入 conf文件夹底下 zoo_sample.cfg 文件名改成 zoo.cfg 第四步: 进入b...

泉天下 ⋅ 29分钟前 ⋅ 0

Oracle 中文日期转换

SELECT TO_date('2011年11月11日', 'yy"年"mm"月"dd"日"') FROM DUAL; 1. Oracle无法识别中文格式,所以添加双引号。 2. 后面的格式是指字符串在转换前的格式,而不是指转换后的格式。...

江戸川 ⋅ 30分钟前 ⋅ 0

MySell:API Spring Boot

起步 类目 商品 订单

BeanHo ⋅ 33分钟前 ⋅ 0

Spring方法拦截器MethodInterceptor

参考资料 1、Spring方法拦截器MethodInterceptor 2、Sharding JDBC源码分析-JdbcMethodInvocation类的作用

哎小艾 ⋅ 36分钟前 ⋅ 0

正则表达式

元字符 元字符,又叫字符集,就是用一些特殊符号表示特定种类的字符或位置。 匹配字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 匹配...

wangchen1999 ⋅ 36分钟前 ⋅ 0

数据库数据导入Elasticsearch案例分享

基于bboss持久层和bboss elasticsearch客户端实现数据库数据导入es案例分享(支持各种数据库和各种es版本) 1.案例对应的源码 https://gitee.com/bboss/bboss-elastic/blob/master/bboss-el...

bboss ⋅ 37分钟前 ⋅ 0

动手---sbt(2)

参考 https://blog.csdn.net/leishangwen/article/details/46225587 建立一个chisel_max目录,文件内容如后面所述,现在开始执行命令: joe@joe-Aspire-Z3730:/media/sdb4/download/scala$ c......

whoisliang ⋅ 44分钟前 ⋅ 0

纯js实现最简单的文件上传(后台使用MultipartFile)

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>XMLHttpRequest上传文件</title> <script type="text/javascript"> //图片上传 var xhr......

孟飞阳 ⋅ 49分钟前 ⋅ 0

iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码

iOS精选源码 日期时间选择器,swift Space Battle 宇宙大战 SpriteKit游戏源码 LLDebugTool - 便捷的IOS调试工具(新增截屏功能) 相机扫描or长按识别二维码、FMDB、键盘动态高度、定位等 动画...

sunnyaigd ⋅ 49分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部