小知识:浅谈二维码的生成和识别原理
目录
前言
条形码
静态二维码
二进制生成图形码
二维码的定位
前言
不知不觉中,我们的生活到处充满了二维码。登录账户需要二维码;加好友需要二维码;共享单车需要二维码;商品包装上也有二维码;甚至连楼下卖水果的阿姨手里都拿张二维码收款。那么,有没有想过这个二维码到底是什么东西呢?那么这个二维码的图案会不会多到不小心重合了呢?
条形码
在二维码出现之前,大行其道的还得是条形码,比如超市收银员扫的那个黑白条就是条形码。条形码是一维数据,当机器在水平方向上扫码这些粗细不同的黑白条时能够获取到其中的数据信息。相比于只在一个维度上携带信息的条形码,二维码在水平、垂直两个维度上都携带了数据。
说白了,条形码和二维码都是对一些数字、字母、字符等人们共识的常规文字,转换成另外一种相对应的符号(黑白条、黑白方块),然后又让这些符号能够被机器识别和翻译成为常规文字。
静态二维码
二维码其实有点类似于我们学生时代考试中用到的答题卡。我们在考试中将需要选择的正确答案用2B铅笔✏️涂黑后,这个信息就可以被机器扫描出来。机器批阅的效率非常高,一秒钟就可以知道你考了多少分。
当然,二维码和答题卡的原理还不太一样。二维码的生成原理并不难理解,其实就是把数据信息转换成对应的黑白方块,最后拼接成了一个日常可见的正方形图案。也就意味着,如果改变了数据信息,就会直接改变二维码的图案,这也是静态码的重要特点。
二进制生成图形码
说了半天,还是没用说到关键点,就是怎么就把数据信息转换成对应的条形码和二维码。
这里先介绍一下划时代意义的“二进制”。二进制由0和1组成,二进制的过程也被称为编码过程,它可以将数字、字母等字符转换成由0和1组成的数字集合。
下面是字符转二进制的转换表格,在线二进制转换:http://www.txttool.com/wenben_strbinary.asp。
字符 | 二进制 |
0 | 00110000 |
1 | 00110001 |
2 | 00110010 |
3 | 00110011 |
10 | 00110001 00110000 |
11 | 00110001 00110001 |
a | 01100001 |
b | 01100010 |
c | 01100011 |
ab | 01100001 01100010 |
. | 00101110 |
比如,百度的网址 “www.baidu.com ” 转换成二进制后如下所示:
01110111011101110111011100101110011000100110000101101001011001000111010100101110011000110110111101101101
如果,此时“0”对应白色方块、“1”对应黑色方块的话,就会出现许多大大小小黑白方块。最后把这些方块填入一个大的正方形内,就形成了二维码图案了。
二维码的定位
不知道,大家有没有好奇,为什么所有的二维码的边角都有三个大的黑色方块。如下图所示:
其实,这三个大小相同的黑色方块是为了给二维做定位的。定位?啥意思?很简单啊,就是你的二维可能斜了、歪了、倒立了,相机就可以通过这三个黑方块点判断二维的正确存放位置了啊!
小知识:浅谈二维码的生成和识别原理相关推荐
- 浅谈二维码的生成和识别原理
前言 不知不觉中,我们的生活到处充满了二维码.登录账户需要二维码:加好友需要二维码:共享单车需要二维码:商品包装上也有二维码:甚至连楼下卖水果的阿姨手里都拿张二维码收款.那么,有没有想过这个二维码到底 ...
- 【Matlab编程实现常见小问题之二】Matlab如何实现QR二维码的生成与识别
本篇文章中,旨在解决如何用Matlab编程实现QR二维码的生成与识别.编程环境是Matlab2012a,所用的开源库是ZXing,ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目 ...
- 基础——二维码的生成细节和原理
二维码的生成细节和原理 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一 ...
- Swift之二维码的生成、识别和扫描
Swift之二维码的生成.识别和扫描 扫码关注简书地址: 最近在项目中遇到了涉及二维码相关的问题, 这里想记录总结一下二维码相关技术 一. 二维码的介绍 二维条码/二维码是用某种特定的几何图形按一定规 ...
- PHP二维码的生成与识别案例
二维码的分类线性堆叠式二维码 矩阵式二维码 二维码的优缺点 优点 信息容量大 编码范围广 容错能力强 译码可靠性高 可引入加密措施 成本低,易制作 缺点 二维码技术成为手机病毒.钓鱼网站传播的新渠道 ...
- 二维码的生成和解析原理
二维码结构 1.版本信息:version1(21*21),version2,...,version40,一共40个版本.版本代表每行有多少模块,每一个版本比前一个版本增加4个码元,计算公式为(n-1) ...
- 二维码的生成细节和原理
转自:http://coolshell.cn/articles/10590.html#jtss-tsina 陈皓 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备 ...
- 二维码的生成细节和原理【转】
转自:http://coolshell.cn/articles/10590.html#jtss-tsina 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流 ...
- qrCode二维码的生成和识别
有关二维码的介绍,我这里不做过多说明, 可以直接去基维百科查看,附上链接 QR code . IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是 ZBarSDKa 和 ZXingObjC ...
最新文章
- 【控制】《自动控制原理》胡寿松老师-第5章-线性系统的频域分析法
- 梯度下降法(一)入门
- [Linux] killall 、kill 、pkill 命令详解
- UI组件之AdapterView及其子类(六)ExpandableListView组件和ExpandableListActivity的使用
- 如何在Windows 10上使用Microsoft Defender扫描文件或文件夹中的恶意软件
- 计算机系统-Unicode字符集与它包含的UTF-8解决方案
- Python遗传算法初学者教程
- Python对象内存地址
- 计算机类毕业设计评阅书评语,本科毕业论文专家评阅评语
- php 视频 源码下载,PHP下载哔哩哔哩视频
- H-大时钟(扩展欧几里得)
- pathon和python_【pathon基础】初识python
- Jenkins无法访问解决方法
- 没的选择时,存在就是合理的::与李旭科书法字QQ聊天记录
- File Storage:文件存储
- 张召忠:第四次工业革命来了》课堂笔记
- opencv+hough直线检测+fitline直线拟合
- 详解matlab均衡算法equalize()
- 局部全局变量、匿名函数、递行函数
- 年终回顾(二):物流机器人篇
热门文章
- 2022年03月电子学会青少年软件编程Scratch(二级)等级考试真题解析
- Jupyter notebook中.py与.ipynb文件的import问题
- 【毕业设计】Stm32单片机的音乐播放器设计 - 物联网 嵌入式
- mac m1 m2 深度学习环境(pytorch)配置
- SAP 库存转储(五)—STO Stock transfer Order
- 微软 oracle ibm,IBM:Oracle和SAP大战的制高点
- javascript设计模式-代理模式
- 半导封装测试流程_江苏半导体封装测试服务
- UWA性能诊断又添新利器,开启资源优化新篇章 !
- xposed 配置如何传入指定模块(ContentProvider)