opencv识别彩色二维码
记录一下识别彩色二维码过程,以及当中遇到的问题和解决办法
1. 由于过程中图片处理需要用到灰度图像,所以读取原图之后,需要转换一个grayImage (CV_BGR2GRAY)
2. GaussianBlur 和 Canny 处理图像, 消除噪声
3. 由于图像可能出现的不连续等情况,之后使用findContours找轮廓会遇到问题,所以先经过dilate 和 erode 处理图像
4. 使用findContours查找最外围轮廓,共分为四个轮廓,三个圆用于定位,一个中心的数据区域
5. 画轮廓(drawContours);分为两个image,一个是三个圆的circleImage,一个是中心的dataImage;circleImage只花轮廓即可,dataImage使用CV_FILLED参数填补
6. HoughCircles从circleImage中查找圆,找到直角顶点到斜边的中线,由于是等腰直角三角形(理论上是的,会有误差,可忽略),所以通过这个中线的向量去计算图像的倾斜度,然后进行旋转;由于是用的中线,所以要额外逆时针多旋转45° 角
7. 使用warpAffine 选择原图像,并使用白色背景填充,最后一个参数 Scalar即可
8. 同时旋转dataImage
9. 通过dataImage,查找最大,最小 的x 和 y 坐标,共四个值。
10. 由于方格个数固定,每行是47个,所以可计算间距,即之后循环的步长
11. 处理原图,范围是最大最小x y坐标内的图像,并且步长是上一步计算的结果。同时,判断像素是否在dataimage的轮廓内。如果不在,丢弃(说明是定位的圆 区域)
12. 每两个方格组成一个字符串,拼接,输出。
done.
opencv识别彩色二维码相关推荐
- 通过OpenCV识别QR二维码
<OpenCV系列教程> 二维码有很多种,我们今天介绍的就是QR这种二维码,全名是 Quick Response Code,下面我们就称作QR码. 博客分为两部分,第一部分是QR码的基础知 ...
- 【opencv】生成二维码并识别
[opencv]生成二维码并识别 生成二维码 图片识别 摄像头识别 生成二维码 import qrcode #模块导入 #调用qrcode的make()方法传入url或者想要展示的内容 img = q ...
- Linux OpenCV + zBar 实现二维码识别
第一个版本 参考:https://blog.csdn.net/pyt1234567890/article/details/109597353 特点:实现简单.但局限于亮度 清晰度好,没有扭曲变形的情况 ...
- [Python]使用QRCode生成彩色二维码
一. 安装QRCode模块 QRCode模块依赖于Pillow模块,在安装QRCode模块前需要先安装Pillow模块.可使用如下命令安装: pip install Pillow QRCode模块安装 ...
- VS2010中使用zxing识别图片二维码
在PC端识别图片二维码有ZXing和OpenCV等方式,Opencv4.0也已经在逐步实现和完善这类的功能.在实际项目工程中,通过使用ZXing编译的库文件,在VC2010中的使用MFC框架实现,动态 ...
- OpenCV AR之二维码叠加视频
OpenCV AR之二维码叠加视频 前言 最近心血来潮,想着用OpenCV做一个AR的小应用,也是看知乎的回答,想到了识别二维码,然后在二维码上放视频,就花了大概两三天做出了这个小demo,完成度大概 ...
- 用Python创建动态彩色二维码
平常我们看到的二维码都是黑白两种颜色,且形状不太好看.本文会教大家把你的文件链接变成漂亮的二维码,微信扫一扫二维码就可以进入你的文件,以下是Python中的处理步骤. 1. 下载库 在Anac ...
- 关于二维码分块上色(彩色二维码)的算法研究
原文:关于二维码分块上色(彩色二维码)的算法研究 众所周知,二维码通常是黑白的,而且是由若干个长方形或正方形小块平铺而成.但从人们的审美角度来看,常见的黑白二维码不免让人审美疲劳.本文试着从分块上色的 ...
- Android 识别图片二维码
zxing依赖: compile 'cn.yipianfengye.android:zxing-library:2.2' 初始化:private String SAVE_PIC_PATH = Envi ...
最新文章
- Java虚拟机性能监控与调优实战
- PMCAFF|产品经理必须懂得的五大心理学分支
- java java.lang.Long详解之三 大显神通的位移运算
- python copy函数用法_Python深浅拷贝
- STL 之fill和fill_n
- [CODEVS1911] 孤岛营救问题(分层图最短路)
- 平面设计个人简历模板
- 调用百度地图api接口并点击marker也就是标点跳转页面
- 【VSCode】设置代码格式化插件Beautify
- 轮换对称性实质 和差化积公式之sinθ+cosθ推导 rd原理,二重积分坐标系转化为什么多了个r; 二重积分几何意义: 二重积分物理意义: 二重积分求导:
- 09-mumu模拟器调键盘,回车键
- Linux 远程工具
- Verilog实现---IEEE标准的单精度浮点乘法器
- Linux用户和用户组的管理
- Pycharm无法编辑问题
- 平板电脑可以用手写的计算机软件,IT教程:平板电脑可以当手写板用吗
- Java项目:springboot蓝天幼儿园管理系统
- 中国联通刘韵洁:5G面临三大挑战
- Javascript交互式网页设计试题(一)
- java 语言 写字板_一个简单的java语言写字板.docx
热门文章
- 前端Vue入门-day04-用vue实现组件通信
- 工厂模式,设计电话卡类,具有属性姓名,具有动作计费,电话卡片分成 联通和移动,要求在控制台中输入联通 就能通过工厂生成一个联通的联通卡的对象,输入移动生成移动卡的对象,然后分别调用各自的计费方式打印出
- 设计模式之装饰模式(Decorator)
- 浅谈视频字幕格式---srt格式
- iSearching防丢App使用方式
- “IBP在城市大脑项目中的应用”入选工信部2021年大数据产业发展试点示范项目名单
- 祥云杯misc writeup
- 2020美容师(初级)考试试题及美容师(初级)操作证考试
- 周年庆标语(如果采纳,我就留下)
- 京东新注册两家云计算公司 注册地址为翠宫饭店