python计算机视觉opencv卡号识别示例详解
目录
- 一、模板预处理
- 1.将模板设置为二值图
- 2.检测模板的轮廓
- 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储
- 4.备注
- 二、图片预处理
- 1.初始化卷积核
- 2.图片预处理第一部分
- 3.图像预处理第二部分
- 三、轮廓处理
- 1.大轮廓过滤
- 2.小轮廓分割
模板图片如下:
需识别的图片如下:
一、模板预处理
1.将模板设置为二值图
2.检测模板的轮廓
3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储
排序的函数如下:
排序并存储:
4.备注
①每一个数字对应的是二值图截出来的那个数字图的矩阵,共10个。
②对每一个数字进行了尺寸的设置,其实多大都行,只要后面匹配计算数值的时候设置成和模板一样的就行。
二、图片预处理
1.初始化卷积核
在后面对图像进行形态学运算的时候会用到
2.图片预处理第一部分
3.图像预处理第二部分
最终目的是把卡片上面的数字部分的坐标选出来,因此,在图像处理过程中,只需要把所有轮廓都画出来,即可,后面会对轮廓进行处理。
三、轮廓处理
1.大轮廓过滤
由于数字的轮廓是拥有类似的长宽比,因此每一个轮廓的坐标得到的近似矩形,它的长宽比应该是相似的,根据这个特性,选择出来我们所需要的大轮廓,并把坐标及长宽信息以元组形式保存起来。
2.小轮廓分割
以上的循环, 是把每一个大轮廓(包含4个数字)切割成4个小轮廓,每一个数字一个轮廓。同样使用切割大轮廓的方法并按照轮廓的横坐标进行排序。
在上面的循环内,继续补充下面的循环:
以上的循环是在上一个大循环之内的。是对于每一个数值进行计算。通过找到矩形,并设置成和模板一样的大小,和模板进行匹配,得到分数。选择分数最高的那个结果的索引作为结果,索引其实就是那个目标数字。
最后直接在原图上画出来框,并把数字填上去,位置相对于卡片数字有一个15的位移。
以上就是python计算机视觉opencv卡号识别示例详解的详细内容,更多关于python计算机视觉opencv卡号识别的资料请关注我们其它相关文章!
相关推荐
-
opencv python简易文档之图片基本操作指南
前言 最近在学习opencv,使用的是python接口.于是想着写些相关的笔记供以后参考,有不足之处希望大家指出. 使用python学习opencv需要下载opencv第三方库. 使用pip安装即可. 安装命令: pip install opencv-python pip install opencv-contrib-python(opencv的贡献库) 引入opencv import cv2 读取图片: img=cv2.imread('cat.jpg') # cat.jpg路径为相对路径 #
-
Python opencv操作深入详解
直接读取图片 def display_img(file="p.jpeg"): img = cv.imread(file) print (img.shape) cv.imshow('image',img) cv.waitKey(0) cv.destroyAllWindows() 读取灰度图片 def display_gray_img(file="p.jpeg"): img = cv.imread(file,cv.IMREAD_GRAYSCALE) print (img
-
OpenCV半小时掌握基本操作之图像基础操作
目录 概述 截取图像 获取颜色通道 读取视频 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️ 图像基础操作 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 截取图像 例子: # 截取图像 img = cv2.imread("picture.jpg") img = img[200:600, 400:1000] cv2.imshow("cut", img) cv2.waitKey(
-
详解OpenCV图像的概念和基本操作
前言: opencv最主要的的功能是用于图像处理,所以图像的概念贯穿了整个opencv,与其相关的核心类就是Mat. 像素: 图片尺寸以像素为单位时,每一厘米等于28像素,如1515厘米长度的图片,等于420420像素的长度.一个像素所能表达的不同颜色数取决于比特每像素(BPP). 灰度图像:8bpp=2的8次方=256色, 高彩色:16bpp=2的16次方=65536色, 真彩色:24bpps=2的24次方=16777216色. 图像分辨率: 图像分辨率是图像总像素的多少,由于图像通常用矩阵表
-
python opencv图像处理基本操作示例详解
目录 1.图像基本操作 ①读取图像 ②显示图像 ③视频读取 ④图像截取 ⑤颜色通道提取及还原 ⑥边界填充 ⑦数值计算 ⑧图像融合 2.阈值与平滑处理 ①设定阈值并对图像处理 ②图像平滑-均值滤波 ③图像平滑-方框滤波 ④图像平滑-高斯滤波 ⑤图像平滑-中值滤波 3.图像的形态学处理 ①腐蚀操作 ②膨胀操作 ③开运算和闭运算 4.图像梯度处理 ①梯度运算 ②礼帽与黑帽 ③图像的梯度处理 5.边缘检测 ①Canny边缘检测 1.图像基本操作 ①读取图像 ②显示图像 该函数中,name是显示窗口的名字
-
python计算机视觉opencv卡号识别示例详解
目录 一.模板预处理 1.将模板设置为二值图 2.检测模板的轮廓 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储 4.备注 二.图片预处理 1.初始化卷积核 2.图片预处理第一部分 3.图像预处理第二部分 三.轮廓处理 1.大轮廓过滤 2.小轮廓分割 模板图片如下: 需识别的图片如下: 一.模板预处理 1.将模板设置为二值图 2.检测模板的轮廓 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储 排序的函数如下: 排序并存储: 4.备注 ①每一个数字对应的是二值图截出来的那个数字图的
-
基于Opencv图像识别实现答题卡识别示例详解
目录 1. 项目分析 2.项目实验 3.项目结果 总结 在观看唐宇迪老师图像处理的课程中,其中有一个答题卡识别的小项目,在此结合自己理解做一个简单的总结. 1. 项目分析 首先在拿到项目时候,分析项目目的是什么,要达到什么样的目标,有哪些需要注意的事项,同时构思实验的大体流程. 图1. 答题卡测试图像 比如在答题卡识别的项目中,针对测试图片如图1 ,首先应当实现的功能是: 能够捕获答题卡中的每个填涂选项. 将获取的填涂选项与正确选项做对比计算其答题正确率. 2.项目实验 在对测试图像进行形态学操
-
Python OpenCV实现图形检测示例详解
目录 1. 轮廓识别与描绘 1.1 cv2.findComtours()方法 1.2 cv2.drawContours() 方法 1.3 代码示例 2. 轮廓拟合 2.1 矩形包围框拟合 - cv2.boundingRect() 2.2圆形包围框拟合 - cv2.minEnclosingCircle() 3. 凸包 绘制 4. Canny边缘检测 - cv2.Canny() 4.1 cv2.Canny() 用法简介 4.2 代码示例 5. 霍夫变换 5.1 概述 5.2 cv2.HoughLin
-
OpenCV形状检测的示例详解
目录 1.基于OpenCV的形状检测Python版本 1.1.定义我们的形状检测器类ShapeDetector 1.2.基于OpenCV的形状检测器 2.基于OpenCV的形状检测C++版本 2.1代码实现 2.2主要函数解析 2.3结果展示 1.基于OpenCV的形状检测Python版本 目录结构 1.1.定义我们的形状检测器类ShapeDetector 开始定义我们的 ShapeDetector 类.我们将跳过这里的 init 构造函数,因为不需要初始化任何东西. # 导入必要的包 impo
-
python编程开发时间序列calendar模块示例详解
目录 calendar模块 设置每周第一天-setfirstweekday 1.默认情况:礼拜一是第一天 2.设置任意一天 是否闰年-isleap 年份间的闰年数-leapdays(y1, y2) 星期几-weekday(year, month, day) monthrange(year, month) 月的日历矩阵-monthcalendar(year, month) 月的日历-prmonth(year, month, w, l) 年的日历-calendar.calendar(year) 格式
-
Python MySQL数据库基本操作及项目示例详解
目录 一.数据库基础用法 二.项目:银行管理系统 1.进行初始化操作 2.登录检查,并选择操作 3.加入查询功能 4.加入取钱功能 5.加入存钱功能 一.数据库基础用法 要先配置环境变量,然后cmd安装:pip install pymysql 1.连接MySQL,并创建wzg库 #引入decimal模块 import pymysql #连接数据库 db=pymysql.connect(host='localhost',user='root',password='1234',charset='ut
-
Python实现过迷宫小游戏示例详解
目录 前言 开发工具 环境搭建 原理简介 主要代码 前言 今天为大家带来解闷用的过迷宫小游戏分享给大家好了.让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏规则: 玩家通过↑↓←→键控制主角行动,使主角从出发点(左上角)绕出迷宫,到达终点(右下角)即为游戏胜利. 逐步实现: 首先,当然是创建迷宫啦,为了方便,这里采用随机生成迷
-
Python开发自定义Web框架的示例详解
目录 开发自定义Web框架 1.开发Web服务器主体程序 2.开发Web框架主体程序 3.使用模板来展示响应内容 4.开发框架的路由列表功能 5.采用装饰器的方式添加路由 6.电影列表页面的开发案例 开发自定义Web框架 接收web服务器的动态资源请求,给web服务器提供处理动态资源请求的服务.根据请求资源路径的后缀名进行判断: 如果请求资源路径的后缀名是.html则是动态资源请求, 让web框架程序进行处理. 否则是静态资源请求,让web服务器程序进行处理. 1.开发Web服务器主体程序 1.
-
Python实现解析yaml配置文件的示例详解
目录 楔子 字典 数组 标量 引用 生成 yaml 文件 楔子 前面我们介绍了 ini 格式的配置文件,本次来看看 yaml,它的表达能力相比 ini 更加的强大.yaml 文件以 .yml 结尾,在介绍它的语法结构之前我们先来看看 yaml 的一些基本规则. 大小写敏感: 使用缩进表示层级关系,并且缩进只能用空格.不可以使用 tab 键.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可: # 表示注释,# 到行尾的所有字符都会被忽略: yaml 支持的数据结构有以下三种: 字典:键值对的集
-
Python实现解析ini配置文件的示例详解
目录 楔子 ini 文件 特殊格式 小结 楔子 在开发过程中,配置文件是少不了的,只不过我们有时会将 py 文件作为配置文件(config.py),然后在其它的模块中直接导入.这样做是一个好主意,不过配置文件是有专门的格式的,比如:ini, yaml, toml 等等. 而对于 Python 而言,也都有相应的库来解析相应格式的文件,下面我们来看看 ini 文件要如何解析. ini 文件 先来了解一下 ini 文件的格式: [satori] name = 古明地觉 age = 16 where
随机推荐
- eWebEditor 请选择一个有效的文件的解决方法
- centos 6.5下修改SSH端口及禁用root远程登录的方法
- 在GridView中LinkButton的属性的应用(如何不用选中就删除这一行)
- phpQuery让php处理html代码像jQuery一样方便
- Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
- C#实现图片放大功能的按照像素放大图像方法
- AndroidUI组件SlidingTabLayout实现ViewPager页滑动效果
- redhat 5.4下安装MYSQL全过程
- php获取网页请求状态程序示例
- java基于dom4j包实现对XML解析的方法
- sql 去零函数 datagridview中数字类型常出现后面的零不能去掉
- JavaScript 判断判断某个对象是Object还是一个Array
- 微信小程序中使用Promise进行异步流程处理的实例详解
- MongoDB查询技巧总结
- MySQL 查询某个字段不重复的所有记录
- javascript 定义新对象方法
- IIS7下配置最大上传附件大小需要注意的事项及操作步骤
- 后缀就扩展名为js的文件是什么文件 原创
- Linux下Java开发环境搭建以及第一个HelloWorld
- 浅谈HTTP使用BASIC认证的原理及实现方法