二维码提取(不包括识别)

实验室相关课题需要对二维码中心点作为特征点来提取,得到其像素坐标,然后利用深度相机恢复其三维空间坐标,用于后续实验。本文主要针对二维码中心点像素坐标提取做介绍。

二维码概述

二维码在日常生活中非常常见,其符号图形如图所示,QR二维码全称Quick Response,简称为QR码,QR码是在1994年9月由Denso公司研制而成。

QR码是由一系列相同尺寸的黑白小方格组成的正方形条码,其由编码区、分隔符、寻像图形、位置探测图形、校正图形和定位图形等识别功能图形组成。QR码和其它传统二维码相比具有高信息量、高可靠性以及高速全方位识读等特点,所以QR码已经广泛应用于各行各业。QR码由很多不同的符号结构组成,每一块符号结构均具有特定的功能,QR二维码的符号结构说明图如图所示。
由二维码的符号结构说明图可以看到其有三个分别位于左上角、右上角和左下角的“回”字形图案,这三个“回”字形图案被称为位置探测图形,如下图所示。将位置探测图形的黑白交界从左到右或从上到下画一条直线,则这条直线经过的图案黑白比例大约为1:1:3:1:1,其不仅具有独特的像素比例关系,而且具有旋转不变性,比较容易从图像中提取出来,所以利用其三个位置探测图形,二维码可在图片中被快速地定位和提取出来。

ZBar算法实现二维码检测

由于二维码是标准化产品,并且在日常生活中应用广泛,目前已经有开源的二维码检测算法用于工业、物流业等行业中实现对二维码的快速检测。目前二维码检测算法应用较多的有ZBar算法和ZXing算法,但是ZBar算法是基于C语言编写,并且检测效率比ZXing算法高,所以本文采用ZBar算法来实现对QR码的检测定位,ZBar算法的流程如图所示。

ZBar算法的基本流程为首先建立4×4的窗口对图像整体以Z字形进行逐行扫描并均值去噪,根据梯度变换得到每行每列的明暗宽度流;然后判断明暗宽度流是否满足QR码的图案特征,若满足则保存明暗宽度流并设置扫码种类为QR码;根据QR码位置探测图形的黑白比例大约为1:1:3:1:1对明暗宽度流线段进行筛选并聚类之后求出横向和纵向线段的交叉点,进而可以求出QR码的四个顶点坐标。
求出QR码的四个顶点坐标之后,通过绘制矩形框在图像上显示出QR码的位置信息,并求出矩形框的中心点的像素坐标即为QR码在像素坐标系下的坐标值。

最终实现结果

对于简单背景:

对于复杂背景:

可以看出对于简单背景和复杂背景,ZBar算法都能较好地检测出二维码中心点,并能提取出其像素坐标。

二维码提取(不包括识别)相关推荐

  1. 二维码的扫描、识别与生成

    详细易懂的二维码的扫描.识别与生成.   ios7之前我们实现二维码扫描是借助第三方(ZBar,ZXing等)来实现的,在ios7之后系统自己提供二维码扫描的方法,性能也要比第三方更好. 今天就来介绍 ...

  2. 【图像处理】条形码与二维码的定位与识别

    代码实现简单环境下的条形码与二维码的定位与识别: 原图: #include<iostream> #include<opencv2\opencv.hpp> #include< ...

  3. 微信小程序扫一扫和微信自带的扫一扫 获取二维码的url包括参数数据

    微信扫一扫二维码跳转指定的页面,而指定的页面获取二维码的url包括参数 在指定的页面.js 我们先以index来为列子吧 index.js onLoad: function(options) {con ...

  4. 二维码扫描+长按识别二维码demo

    二维码扫描+长按识别二维码demo,已封装好 源码下载

  5. qrCode二维码的生成和识别

    有关二维码的介绍,我这里不做过多说明, 可以直接去基维百科查看,附上链接 QR code . IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是 ZBarSDKa 和 ZXingObjC ...

  6. ios微信二维码无法长按识别的若干解决方案

    ios微信二维码无法长按识别的若干解决方案 参考文章: (1)ios微信二维码无法长按识别的若干解决方案 (2)https://www.cnblogs.com/is17/p/5777373.html ...

  7. Android 养成记-1.5 二维码生成+添加logo+识别+扫码

    先看图说话: 1.二维码生成: public void generateQRcode() throws FileNotFoundException {String mLink = text.getTe ...

  8. 假如把二维码类似的标签识别技术做成语音片段,优势劣势有哪些?

    假如把二维码类似的标签识别技术做成语音片段,优势劣势有哪些? 优势1:如果能把二维码信息转到人耳朵识别不到对人体无害的频率,那语音二维码的用户体验应该更高. 优势2:在o2o产业里以往的一个二维码只能 ...

  9. Swift之二维码的生成、识别和扫描

    Swift之二维码的生成.识别和扫描 扫码关注简书地址: 最近在项目中遇到了涉及二维码相关的问题, 这里想记录总结一下二维码相关技术 一. 二维码的介绍 二维条码/二维码是用某种特定的几何图形按一定规 ...

最新文章

  1. 路由器交换机命令总结
  2. ANSYS——“There is at least 1 small equation solver pivot term”问题的解决办法
  3. performSegueWithIdentifier:sender里边的sender是啥意思
  4. linux 环境 RocketMQ 4.8.0 安装、部署控制台
  5. php 网站上传大小限制吗,配置PHP程序网站上传文件大小的限制!
  6. Android中VectorDrawable与SVG
  7. Oracle数据库创建表空间
  8. c语言程序个位,C语言位字段
  9. C++主线程与子线程的关系
  10. vb.net 教程 11-1 打印组件 1 基础
  11. 悬镜安全宣布完成数千万元Pre-A轮融资
  12. CMO全国第十,保送清华姚班,别人家的牛娃是这样学习数学竞赛的!
  13. Qt配置OpenCV时mingw32-make反复出错的原因
  14. git 添加文件覆盖文件, 删除文件
  15. 批判性思维过程之 理性、感性的抉择
  16. Tomb Raider(暴力模拟)
  17. 深圳的住房公积金的那些事儿~(缴纳标准,用处用法)
  18. html 气泡动画效果,CSS 动画实现动态气泡背景的方法
  19. Shell | 文件或关键字查询
  20. linux数组越界,数组越界导致系统崩溃

热门文章

  1. Java 确定元音字母位置
  2. 今日份分享!1700份PPT模板,有需要自取了....
  3. 在Linux中创建文件目录软链接、硬链接的方法
  4. 实验室LIMS系统能从哪些方面提升实验室效率
  5. 单字双字三字_双字名和三字名在选择上有哪些区别
  6. UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)
  7. iOS12 自动填充验证码实现
  8. 威纶通触摸屏分期付款锁机(带PC程序) 文件内包含 威纶通触摸屏源程序例子(含宏程序) 总共两个页面可以快速移植到自己的程序上
  9. 软件问题定义及可行性分析——系统流程图
  10. 休眠 鼎鼎机器人_鼎鼎机器人下载_部落冲突鼎鼎机器人 2.1.0 免费版_零度软件园...