二维码,也称为QR码,是一种可以被计算机读取的光学标签,它包含了与之关联对象的数据。二维码通常包含用于追踪器、位置或标识符的信息,这些信息可以引导用户访问网站或应用程序。为了有效地存储信息,二维码使用了四种指定的编码模式:数字、字母数字、字节(二进制)和汉字。
二维码中包含的数据可以通过构成代码的模式进行解码。二维码外的三个大小相当的正方形允许阅读器识别一个常规的二维码。一旦识别出这三个正方形,它就会得出整个大正方形是一个二维码的结论。然后,整个二维码被分解成一个网格,并由二维码阅读器进行检查。根据网格方块是黑色还是白色,它依次检查每一个,并赋予它一个值。之后,它将网格方块组合成更大的模式。这些更大的模式可以组合在一起,重新组合二维码中的所有数据(例如,一个网页的URL或产品的内部标识符)。
六个元素可以用来识别传统的二维码:
要使用计算机视觉识别和读取二维码的内容,需要:
为了收集数据,有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 Universe中的数据构建任何模型。
请随时探索Universe,看看哪些模型引起了兴趣。让想象力自由驰骋,并使用构建二维码检测器时获得的技能为新项目提供动力。要开始一个新想法,请在Roboflow Universe中找到一个数据集,考虑部署模型的最佳方法,并推出第一个项目。