什么是二维码?带你快速了解二维码的原理

二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。与一维条码不同的是,二维条码的长度和宽度都可以记载数据,而一维条码仅宽度记载数据。二维条码还有独特的“定位点”和“容错机制”,即使部分条码无法识别或条码受损,也能正确还原条码上的信息。

此外,二维条码的种类繁多,不同的机构开发的二维条码具有不同的结构和编写、读取方法。

堆叠式/行排式二维条码,如 Code 16K、Code 49、PDF417(如下图)等。

矩阵式二维码,最受欢迎的是QR CODE。与一维码相比,二维码具有更大的数据存储量,可以包含数字、字符和中文文本等混合内容。它还具有一定的容错性,即使部分损坏,仍能正常读取。此外,二维码的空间利用率也更高。

常用二维码对比

活码的原理

活码,作为二维码的高级形态,赋予了二维码更多的可能性。它通过短网址链接至云端信息,使得二维码图案更为简洁、易扫描。更重要的是,活码的内容可以随时更改,而图案保持不变。这极大地便利了二维码的印刷与管理工作,甚至可以先印刷图案,之后再设置内容。

从理论上来说,活码可以支持无限的内容,我们也没有对文本的字数做任何的限制。然而,实际操作中可能会受到网络带宽和服务器性能的影响。当输入过多的文字时,可能会影响二维码的生成与扫描速度。同样,图片和文件的大小也没有限制,但过大的内容可能在手机端无法显示,这与手机的网络状况有关。所以,实际操作中,还是需要把握活码的使用。

这项技术的原理虽简单,却极为实用。现在许多软件和应用都能生成活码。草料并非此技术的原创者,但我们看到了许多企业和个人对这项技术的需求。为此,草料提供二维码系统搭建平台,让更多人能够轻松掌握这项技术。用户只需注册并登录,即可使用简单易用的内容编辑器创建和修改自己的二维码。管理后台则帮助用户有序管理所有创建的二维码,并掌握扫码数据和反馈信息。所有的网页内容存放在公有云上,不仅运行安全、稳定,还省去了高昂的基础设施投入和开发维护成本,节约了应用成本。

用相同的内容制作的二维码为什么图案不同

基本概念:二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它在代码编制上巧妙地利用了构成计算机内部逻辑基础的“0”和“1”比特流概念,通过使用与二进制相对应的几何形体来表示文字数值信息。通过图像输入设备或光电扫描设备,这些信息可以实现自动处理。

二维码具有一些条码技术的共性,如每种码制有其特定的字符集,每个字符占有一定的宽度,并具有一定的校验功能。此外,二维码还具有自动识别不同行信息的功能,并能够处理图形旋转变化点。

值得注意的是,同样的内容,不做任何修改,反复生成的二维码图案都不一样。这是由于这些特定的几何图形是按照一定规律随机分布在平面上的。这就好比一个句子,无论是从左到右写还是从上到下写,表达的都是同一个意思。对于二维码来说,也是同样的道理。

什么是容错率

容错率也叫纠错率,就是指二维码可以被遮挡后仍能被正常扫描,而这个能被遮挡的最大面积就是容错率。

最常见的QR二维码,用的是里德-所罗门码(RS)来做纠错。分有几级,纠错级别越高,整体需要携带的信息越多:L级可纠正约7%错误、M级别可纠正约15%错误、Q级别可纠正约25%错误、H级别可纠正约30%错误。RS码原理比较复杂,整体基于“任意k个确定点可表示一个阶数至少为k-1的多项式”,实际上发送超过k个点,就算中间有一些错误,也能通过数学原理反推出最初的多项式,从而获得信息。并不是所有位置都可以缺损,像最明显的那三个角上的方框,直接影响初始定位。中间零散的部分是内容编码,可以容忍缺损。

由于调整纠错率的时候,二维码的图案分布也要重新调整,所以每次调整纠错率,二维码的图案都会发生变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/325480.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yolo使用tensorboard查看训练过程

在终端打开并将此处的路径替换成绝对路径即可。 # tensorboard --logdir "绝对路径" tensorboard --logdir"D:\Learning\PycharmProjects\yolov8\ultralytics-main\runs\detect\train4" 参考:查看训练过程

Samtec工程师分享ADS Design Guide Developer Studio | Keysight EDA创新论坛上的思维碰撞

【摘要/前言】 "Samtec 始终为客户提供卓越的信号完整性支持。有时,我们协助客户通过模拟来评估通道。不同的参数设置会导致不同的模拟结果,为了避免这一情况发生,我们利用 ADS Design Guide Developer Studio统一了通道配置。" …

C++——STL标准模板库——容器详解——list

一、基本概念 (一)定义 list:双向链表。list是一种分布式存储的线性表,每个节点分为数据域和指针域,其中指针域中包含一个指向前驱节点的指针和一个指向后续节点的指针,基本模型如下: &#…

PHP+MySQL组合开发:微信小程序万能建站源码系统 附带完整的搭建教程

随着移动互联网的快速发展,微信小程序已成为企业进行移动营销的重要工具。然而,对于许多中小企业和个人开发者来说,开发一个功能完善、用户体验良好的小程序是一项复杂的任务。罗峰给大家分享一款微信小程序万能建站源码系统。该系统采用PHPM…

AI工具推荐:开源TTS(文本生成语音)模型集合

XTTS TTS是一个语音生成模型,可以通过一个简短的6秒音频片段将声音克隆到不同的语言。它不需要大量的训练数据,也不需要耗费大量时间。TTS支持17种语言,可以进行声音克隆、情感和风格转移、跨语言声音克隆以及多语言语音生成等功能。XTTS-v2…

Oracle-java下载、开源/商业许可证(收费、免费说明)、版本发布日志

Oracle-java下载、开源/商业许可证(收费、免费说明)、版本发布日志 下载开源/商业许可证(收费、免费说明)java8版本发布日志以上是一般情况,具体的以官网发布信息为准 下载 下载地址:https://www.oracle.c…

经纬恒润首个国产化4G T-BOX已获客户定点

近日,经纬恒润首个国产化4G T-BOX产品获得某头部整车厂定点,预计2024年开始量产。 经纬恒润自主研发的首个国产化4G T-BOX, 基于4G蜂窝通讯、GNSS卫星定位和车辆总线通信等核心技术,可以为整车客户提供包括行车数据采集、高精度位置信息、车…

openpose环境搭建

编程如画,我是panda! 最近学习要用要openpose,配了三天的环境,快疯了,踩了很多坑,在这里和大家分享一下 目录 前言 一、安装openpose 二、运行openpose 三、常见的两个错误 1. No module named pyopen…

RANSAC(Random sample consensus)随机抽样一致性

文章目录 算法介绍实现过程以直线拟合为例直线的描述源码参考连接 算法介绍 RANSAC(Random Sample Consensus)是一种迭代的参数估计算法,用于从包含噪声和异常值的数据中拟合数学模型。它最初由Fischler和Bolles于1981年提出,被广…

soso移动营业大厅(纯后端+MySQL数据库+JDBC)

一、项目需求 中国移动,中国联通,中国电信是国内3大通信运营商,每个运营商都提供了不同的品牌套餐来应对不同的用户群,比如北京移动主要有全球通,神州行,动感地带等3大品牌套餐,每种套餐的内容和费用不同,嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各…

[HNCTF 2022 Week1]What is Web

flag 在源码里 <! 是 HTML 文档的注释格式&#xff0c;在源码里按 Ctrl F 搜索 <! 能帮你更快地找到提示。 将这个字符串 base64 解码得到 flag &#xff1a;

React Native 环境安装

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 搭建开发环境 React Native 中文网 Homebrew&#xff08;包管理器&#xff09; → rvm&#xff08;ruby版本管理&#xff09; → ruby → cocoapods 安装 Homebrew Homebrew /bin/ba…

shell 循环 判断

for 循环 Shell 脚本里最简单的循环当属 for 循环。最简单的 for 循环如下所示&#xff0c;你只需将变量值依次写在 in 后面即可&#xff1a; #!/bin/bashfor num in 1 2 3 4 doecho $num done 如果要循环的内容是字母表里的连续字母或连续数字&#xff0c;那么就可以按以下语…

Matlab 使用 DH table 建立的 robot 和实际不符

机器人仿真 想借助 matlab robotics toolbox 来仿真机器人&#xff0c;但是直接输入自己的 DH table 显示出来的 robot 和实际不情况不符。 DH table 建立 robot Build Manipulator Robot Using Kinematic DH Parameters 主要使用 setFixedTransform&#xff0c;DH table 中…

智云谷再获资本市场青睐,完成数千万元A+轮融资

近日&#xff0c;深圳前海智云谷科技有限公司&#xff08;以下简称“智云谷”&#xff09;完成数千万元A轮融资&#xff0c;本轮融资由青松基金独家投资&#xff0c;多维资本担任独家融资财务顾问。本轮融资资金将用于扩大新技术研发投入、智能工厂扩产、加速产品交付&#xff…

K8S----YAML

kubernetes中资源可以使用YAML描述&#xff08;如果您对YAML格式不了解&#xff0c;可以参考YAML语法&#xff09;&#xff0c;也可以使用JSON。其内容可以分为如下四个部分&#xff1a; typeMeta&#xff1a;对象类型的元信息&#xff0c;声明对象使用哪个API版本&#xff0c…

Vue-20、Vue监测数组改变

1、数组调用以下方法Vue可以监测到。 arr.push(); 向数组的末尾追加元素 const array [1,2,3] const result array.push(4) // array [1,2,3,4] // result 4arr.pop(); 删除末尾的元素 const array [a, b] array.pop() // b array.pop() // a array.pop() // undefi…

【Shell编程练习】编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量&#xff0c;小于给定值时报警 猜大小 输入三个数并进行升序排序 系列文章目录编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 编写脚本测试 192.…

opencv_角点检测

文章内容 一个opencv检测角点的程序 运行效果 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>using namespace cv; using namespace std;void detectCorners(M…

AI数字人短视频变现项目:打造短视频运营变现新模式

如今&#xff0c;随着科技的快速发展和人们对数字内容的增长需求&#xff0c;短视频成为了互联网用户最喜爱的娱乐方式之一。然而&#xff0c;在这个竞争激烈的市场中&#xff0c;如何为短视频创作者提供更多的变现机会成为了一个重要的问题。AI数字人短视频变现项目的出现&…
最新文章