记录一下识别彩色二维码过程,以及当中遇到的问题和解决办法

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识别彩色二维码相关推荐

  1. 通过OpenCV识别QR二维码

    <OpenCV系列教程> 二维码有很多种,我们今天介绍的就是QR这种二维码,全名是 Quick Response Code,下面我们就称作QR码. 博客分为两部分,第一部分是QR码的基础知 ...

  2. 【opencv】生成二维码并识别

    [opencv]生成二维码并识别 生成二维码 图片识别 摄像头识别 生成二维码 import qrcode #模块导入 #调用qrcode的make()方法传入url或者想要展示的内容 img = q ...

  3. Linux OpenCV + zBar 实现二维码识别

    第一个版本 参考:https://blog.csdn.net/pyt1234567890/article/details/109597353 特点:实现简单.但局限于亮度 清晰度好,没有扭曲变形的情况 ...

  4. [Python]使用QRCode生成彩色二维码

    一. 安装QRCode模块 QRCode模块依赖于Pillow模块,在安装QRCode模块前需要先安装Pillow模块.可使用如下命令安装: pip install Pillow QRCode模块安装 ...

  5. VS2010中使用zxing识别图片二维码

    在PC端识别图片二维码有ZXing和OpenCV等方式,Opencv4.0也已经在逐步实现和完善这类的功能.在实际项目工程中,通过使用ZXing编译的库文件,在VC2010中的使用MFC框架实现,动态 ...

  6. OpenCV AR之二维码叠加视频

    OpenCV AR之二维码叠加视频 前言 最近心血来潮,想着用OpenCV做一个AR的小应用,也是看知乎的回答,想到了识别二维码,然后在二维码上放视频,就花了大概两三天做出了这个小demo,完成度大概 ...

  7. 用Python创建动态彩色二维码

      平常我们看到的二维码都是黑白两种颜色,且形状不太好看.本文会教大家把你的文件链接变成漂亮的二维码,微信扫一扫二维码就可以进入你的文件,以下是Python中的处理步骤. 1. 下载库   在Anac ...

  8. 关于二维码分块上色(彩色二维码)的算法研究

    原文:关于二维码分块上色(彩色二维码)的算法研究 众所周知,二维码通常是黑白的,而且是由若干个长方形或正方形小块平铺而成.但从人们的审美角度来看,常见的黑白二维码不免让人审美疲劳.本文试着从分块上色的 ...

  9. Android 识别图片二维码

    zxing依赖: compile 'cn.yipianfengye.android:zxing-library:2.2' 初始化:private String SAVE_PIC_PATH = Envi ...

最新文章

  1. Java虚拟机性能监控与调优实战
  2. PMCAFF|产品经理必须懂得的五大心理学分支
  3. java java.lang.Long详解之三 大显神通的位移运算
  4. python copy函数用法_Python深浅拷贝
  5. STL 之fill和fill_n
  6. [CODEVS1911] 孤岛营救问题(分层图最短路)
  7. 平面设计个人简历模板
  8. 调用百度地图api接口并点击marker也就是标点跳转页面
  9. 【VSCode】设置代码格式化插件Beautify
  10. 轮换对称性实质 和差化积公式之sinθ+cosθ推导 rd原理,二重积分坐标系转化为什么多了个r; 二重积分几何意义: 二重积分物理意义: 二重积分求导:
  11. 09-mumu模拟器调键盘,回车键
  12. Linux 远程工具
  13. Verilog实现---IEEE标准的单精度浮点乘法器
  14. Linux用户和用户组的管理
  15. Pycharm无法编辑问题
  16. 平板电脑可以用手写的计算机软件,IT教程:平板电脑可以当手写板用吗
  17. Java项目:springboot蓝天幼儿园管理系统
  18. 中国联通刘韵洁:5G面临三大挑战
  19. Javascript交互式网页设计试题(一)
  20. java 语言 写字板_一个简单的java语言写字板.docx

热门文章

  1. 前端Vue入门-day04-用vue实现组件通信
  2. 工厂模式,设计电话卡类,具有属性姓名,具有动作计费,电话卡片分成 联通和移动,要求在控制台中输入联通 就能通过工厂生成一个联通的联通卡的对象,输入移动生成移动卡的对象,然后分别调用各自的计费方式打印出
  3. 设计模式之装饰模式(Decorator)
  4. 浅谈视频字幕格式---srt格式
  5. iSearching防丢App使用方式
  6. “IBP在城市大脑项目中的应用”入选工信部2021年大数据产业发展试点示范项目名单
  7. 祥云杯misc writeup
  8. 2020美容师(初级)考试试题及美容师(初级)操作证考试
  9. 周年庆标语(如果采纳,我就留下)
  10. 京东新注册两家云计算公司 注册地址为翠宫饭店