二维码的工作原理与计算机视觉检测

二维码,也称为QR码,是一种可以被计算机读取的光学标签,它包含了与之关联对象的数据。二维码通常包含用于追踪器、位置或标识符的信息,这些信息可以引导用户访问网站或应用程序。为了有效地存储信息,二维码使用了四种指定的编码模式:数字、字母数字、字节(二进制)和汉字。

二维码的工作原理

二维码中包含的数据可以通过构成代码的模式进行解码。二维码外的三个大小相当的正方形允许阅读器识别一个常规的二维码。一旦识别出这三个正方形,它就会得出整个大正方形是一个二维码的结论。然后,整个二维码被分解成一个网格,并由二维码阅读器进行检查。根据网格方块是黑色还是白色,它依次检查每一个,并赋予它一个值。之后,它将网格方块组合成更大的模式。这些更大的模式可以组合在一起,重新组合二维码中的所有数据(例如,一个网页的URL或产品的内部标识符)。

二维码的组成部分

六个元素可以用来识别传统的二维码:

  • 空白区域(Quiet zone):这是二维码的外围空白区域。二维码阅读器需要这个边框来区分二维码内外的元素。
  • 定位图案(Finder pattern):二维码的左下角、左上角和右上角通常包含三个黑色正方形。这些正方形提醒二维码阅读器二维码的存在,并指示代码的外部极限位置。
  • 对齐图案(Alignment pattern):在右下角附近有另一个小正方形。它确保即使二维码倾斜或扭曲,也能被读取。
  • 定时图案(Timing pattern):在定位图案中,这个L形线条连接三个正方形。即使二维码损坏,由于定时图案,阅读器也能区分整个代码中的特定正方形。
  • 版本信息:在右上角的定位图案单元格中有一个短数据字段。这让知道正在扫描的是哪个版本的二维码。
  • 数据单元格:二维码中包含的URL、电话号码或消息都发送在代码的剩余部分。

如何使用计算机视觉检测和读取二维码

要使用计算机视觉识别和读取二维码的内容,需要:

  1. 收集二维码数据集。
  2. 训练一个模型来检测图像中的二维码。
  3. 使用Roboflow API部署模型。
  4. 读取检测到的二维码中的数据。

为了收集数据,有Roboflow Universe,这是一个网站,拥有世界上最大的标注和准备使用的数据集集合,这些数据集涉及各种行业,从自动驾驶汽车和农业到制造业和游戏,都是开源且免费使用的。使用关键词'QR'或'QR code'进行搜索,会看到许多数据集选项供使用。

现在有了数据,准备训练检测模型。前往Roboflow并创建一个名为"QR Codes Detection"的新项目。按照仪表板中的说明操作,然后点击侧边栏中的"上传"。在这里,可以上传之前从Universe下载的数据。上传数据集后,确保所有数据都正确标记。可以添加增强功能,以创建数据集中图像的更多变体。然后,可以使用Roboflow Train一键训练计算机视觉模型。

成功训练模型后,转到Deploy页面,并使用提供的Python脚本进行推理。将在这个例子中使用Roboflow Python库。使用Roboflow Python API非常简单。可以使用pip进行设置:

pip install roboflow

导入Roboflow模块。输入API密钥。添加项目名称。选择模型版本。可以从Roboflow仪表板的"Deploy"选项卡中获取项目名称和模型版本。这段代码为使用Python API和托管在Roboflow上的训练好的模型进行推理做好准备。可以选择适合自定义需求的置信度和重叠阈值。这个数字将根据准确性的重要性而变化:如果只想看到模型更确定的推理,可以增加置信度和模型阈值。

现在准备读取检测到的二维码。为了读取二维码数据,可以使用一个名为pyzbar的Python库,该库是为了读取二维码中的数据而构建的。

pip install pyzbar

现在已经安装了库,导入库:

from pyzbar.pyzbar import decode

然后创建一个函数来读取ROI:

def read_qr_code(roi):

然后将ROI传递给'decoder'函数,该函数解码并输出二维码内的数据:

decoder = decode(roi)

解码器显示结果“https://blog.roboflow.com/”,这是二维码中编码的URL。

使用Roboflow构建二维码检测器

现在有一个工作模型,可以:

  • 在图像中识别二维码。
  • 从图像中提取二维码。
  • 解码二维码并返回其内容。

现在拥有了使用Roboflow构建二维码检测器所需的所有工具。更重要的是,不仅学会了如何构建二维码检测器,还学会了如何根据Roboflow Universe中的数据构建任何模型。

请随时探索Universe,看看哪些模型引起了兴趣。让想象力自由驰骋,并使用构建二维码检测器时获得的技能为新项目提供动力。要开始一个新想法,请在Roboflow Universe中找到一个数据集,考虑部署模型的最佳方法,并推出第一个项目。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485