跟我们一起
玩转路由器

干货 | 基于OpenCV Python实现二维码检测与识别

二维码结构与检测

标准的二维码结构如下所示:

特别需要注意的是图中三个黑色正方形区域,它们是用于定位二维码的最关键区域。我们在进行二维码扫描检测时,首要任务就是识别这三个区域。一旦成功找到这三个区域,就意味着我们已经成功检测到一个二维码,可以进行定位与识别了。这三个角上的正方形区域从左到右,从上到下的黑白比例为1:1:3:1:1。不管角度如何变化,这个特征是最显著的,通过这个特征我们可以实现二维码的扫描检测与定位。

立即学习“Python免费学习笔记(深入)”;

使用Python语言生成二维码其实非常简单,有一个纯Python的二维码生成包,地址和安装执行命令如下:

然后执行如下代码即可生成二维码,代码示例如下:

使用zbar进行二维码解析时需要注意,标准的zbar不支持Python3,这是一个较大的问题。幸运的是,有一位开发者在zbar的基础上进行了封装,开发了pyzbar包,支持Python2和Python3,非常实用。安装非常简单,Windows下一条命令即可搞定,Linux和Mac OS则需要先安装zbar然后再执行此命令。

解析接口支持PIL/Pillow图像、OpenCV/numpy数组和原始字节等多种格式,这意味着可以与OpenCV无缝对接,OpenCV读取的图像可以直接用于解析。示例如下:

解析结果分为四个部分,分别为:

外接矩形与多边形状表示如下:

其中,蓝色矩形表示外接矩形,粉色表示多边形的四个点坐标。

二维码检测与解析示例如下,其中QRcodeDetector是我基于二值图像轮廓分析实现的二维码检测类。该类支持各种纠偏、倾斜和放缩的二维码检测,同时对检测到的二维码区域进行ROI截取,然后使用zbar进行二维码解析,输出二维码解析数据内容。导入的包与初始化代码如下:

静态图像二维码检测与解析的代码如下:

实时视频二维码检测与解析的代码如下:

效果展示如下:

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《干货 | 基于OpenCV Python实现二维码检测与识别》
文章链接:https://www.lu-you.com/settings/29359.html
本站资源来源于互联网整理,若有图片影像侵权,联系邮箱429682998@qq.com删除,谢谢。

评论 抢沙发

登录

找回密码

注册