资讯专栏INFORMATION COLUMN

聊聊qrcode的detect position

legendaryedu / 880人阅读

摘要:序本文主要介绍下的,也就是定位图案,用于定位一张图片中二维码所处的位置。分类分为三类是和的原型,从到共种尺寸。是的改良版本,添加了对齐标记,从到共种尺寸。这里默认有个的概念,不同的对应不同的尺寸大小。最高,,所以最高是的矩阵。

本文主要介绍下qrcode的detect position,也就是定位图案,用于定位一张图片中二维码所处的位置。

qrcode分类

QRCode 分为 Model 1、Model 2、Micro QR 三类:

Model 1 :是 Model 2 和 Micro QR 的原型,从Version 1 到 Version 14 共14种尺寸。

Model 2 :是 Model 1 的改良版本,添加了对齐标记,从Version 1 到 Version 40 共40种尺寸。

Micro QR :只有一个定位标记,最小尺寸是 11*11 modules 。

这里默认model 2

version

qrcode有个Version的概念,不同的version对应不同的尺寸大小。其公式如下:

Version对应的矩阵边长 = (V-1)*4 + 21

Version 1是21 x 21的矩阵,Version 2是 25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸。
最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的矩阵。

qrcode原始byteMatrix实例

内容为hello world,version为2,qrcode矩阵为25 x 25

 1 1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1
 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1
 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1
 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1
 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1
 1 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1
 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1
 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0
 0 0 1 1 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1
 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1
 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 0
 0 1 0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0
 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1
 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0
 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0
 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1
 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1
 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1
 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1
 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0
 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0
 1 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1
 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1
 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0
 1 1 1 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1
position detection
 1 1 1 1 1 1 1
 1 0 0 0 0 0 1
 1 0 1 1 1 0 1
 1 0 1 1 1 0 1
 1 0 1 1 1 0 1
 1 0 0 0 0 0 1
 1 1 1 1 1 1 1

qrcode的定位图案,标准的3个,左上角、右上角,左下角,边长为7

Alignment
1 1 1 1 1 
1 0 0 0 1 
1 0 1 0 1 
1 0 0 0 1 
1 1 1 1 1 

边长为5,只有Version 2以上(包括Version2)的qrcode才需要,辅助定位。至少0个,至多6个,根据version不同个数不一样

version8的实例如下:

判断一个点是否在detect position内

主要判断x,y坐标是否在几个边界值内

if( (x < 7 && y < 7) //左上角
    || (x < 7 && (y >= height - 7)) //左下角
    || ((x >= width - 7) && y < 7)){ //右上角
    //在detect position之内
} 
    
doc

QR Code Standardization

二维码的生成细节和原理

学习笔记:使用 OpenCV 识别 QRCode

基于Zxing修改定位点(码眼)的颜色

QR 码的位置检测符

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67911.html

相关文章

  • 聊聊zxingqrcode

    摘要:序本文主要研究下的的一些代码。可以看到这里重新计算了输出的宽度和高度,是取了的宽高两边的与输入参数的目标宽高取最大值。也就是说如果的宽高大于目标的宽高,则以的宽高为准,这种情况下的基本跟输出的一致。 序 本文主要研究下zxing的qrcode的一些代码。 maven com.google.zxing core ...

    cnTomato 评论0 收藏0
  • 【umi插件开发】控制台二维码

    摘要:在外部没有好的检查方案,好在在今年月的一个更新中,在事件中提供了,这为插件获取端口号提供了简便的接口,具体可查看。擅长网站建设公众号开发微信小程序开发小游戏公众号开发,专注于前端领域框架交互设计图像绘制数据分析等研究。 前言 在进行移动端webapp开发时,你是否会想要在真机上调试项目。下面分析一下本地运行项目时,真机调试需要的步骤和麻烦的点。 你需要将手机和运行项目的电脑连接到同一...

    testbird 评论0 收藏0
  • 茄子详解 Python qrcode 二维码模块

    摘要:声明使用方法参数解释控制二维码的大小,取值范围从到。取最小值时,二维码大小为。控制二维码纠错级别。默认值,大约或者更少的错误会被更正。控制二维码四周留白包含的格子数,默认为。清空数据返回二维码数组。 https://github.com/lincolnloo... 声明 import qrcode 使用 QRCode 方法 qrcode.QRCode( version=1, ...

    woshicixide 评论0 收藏0
  • 使用 qrcodejs 生成二维码几个问题

    摘要:在这里的用法如下微信中多个二维码在一起识别错误这个问题,我也遇到了,根据网友的提示,微信是截屏识别的,所以会出现这种问题。示例代码这里代码跟前面脱节了,是另外的结构,仅作为示例代码是类似的一些的汇总对象微信中有两个挨着二维码长按识别的问题 博客地址 Preface 产品希望我这边下载页面加个二维码,可以扫描下载 APP,并且希望二维码中有公司的 logo,很合理的需求,不过实现的时候依...

    Lyux 评论0 收藏0
  • 千呼万唤始出来,OpenCV 4.0正式发布!

    摘要:目前,支持尚未完成仅支持加载编码的和,还未支持编码。部分支持对象检测网络的版本缺少一些提供矩形列表的最终图层。而且,此更改也已添加到分支。请注意,仅在英特尔上进行测试,因此仍需要额外的。为了使实时采集处理有高效,在模块中更新了支持。 OpenCV 4.0 正式版来啦!虽然官网还没更新,但Github已经放出来了!重回英特尔的OpenCV终于迎来一次大版本更新,增加了诸多新特性,快来一起看看吧...

    nifhlheimr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<