码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python识别二维码的两种方法


    人生苦短,快学Python!大家好,我是朱小五

    最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口。从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二维码确实成为了我们生活中不可或缺的一部分。

    在学习Python处理二维码的过程中,我们看到的大多是“用python生成酷炫二维码”、“用Python制作动图二维码”之类的文章。而关于使用Python批量识别二维码的教程,并不多见。所以今天我会给大家分享两种批量识别二维码的Python技巧!

    pyzbar + PIL

    二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个移动设备上超流行的一种编码方式。

    我们在之前的文章《轻松识别数百个快递单号》,Python的第三方模块pyzbar不仅可以识别一维条形码,也可以很方便地处理二维码的识别。

    不过pyzbar库需要搭配PIL或者opencv使用,主要是为了利用Image.open()或者cv2.imread()来读取图片文件。

    在交互式环境中输入如下命令:

    from pyzbar.pyzbar import decode
    from PIL import Image
    decocdeQR = decode(Image.open("D:/test.jpg"))
    print(decocdeQR[0].data.decode('ascii'))
    
    • 1
    • 2
    • 3
    • 4

    输出:

    这样就轻松实现了二维码的解析与识别。

    cv2

    另外,opencv模块其实自带二维码识别功能。

    注1:对于opencv模块,安装时需要输入pip install opencv-python,但在导入的时候采用import cv2。

    注2:使用opencv模块时,文件路径、图片名称都不要包含中文,否则会报错。

    在交互式环境中输入如下命令:

    import cv2
    
    qrcode_filename = "D:/test.jpg"
    qrcode_image = cv2.imread(qrcode_filename)
    qrCodeDetector = cv2.QRCodeDetector()
    data, bbox, straight_qrcode = qrCodeDetector.detectAndDecode(qrcode_image)
    
    print(data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTEwtYct-1656490943906)(https://typora-1300769465.cos.ap-beijing.myqcloud.com/typora_zhuxiao5/image-20220530161115463.png)]

    如上所示,我们同样实现了二维码的解析与识别。在上述代码中,第四行代码中qrCodeDetector.detectAndDecode(qrcode_image)有三个返回值。其中data是解码后的内容,如我们打印输出结果所示。

    ▲二维码的结构

    bbox是指二维码轮廓的四个角,从左上角顺时针转的。而straight_qrcode是二维码的原始排列,也就是每个点是0还是255的一个矩阵,白色是255,黑色是0。

    感兴趣的同学可以详细了解更多的二维码的结构。

  • 相关阅读:
    geo 读取单细胞csv表达矩阵 单细胞 改列名 seurat
    基于JAVA学校运动会信息管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    结构化日志记录增强网络安全性
    18.1 new、delete进一步认识
    关于电影的HTML网页设计-威海影视网站首页-电影主题HTM5网页设计作业成品
    nrf52832通过自定义profile实现BLE串口透传功能
    SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)
    PID原理及python简单实现与调参
    毫米波雷达在环境监测中的应用:气象学和气候研究的前沿技术
    菜鸟教程《Python 3 教程》笔记(18):File(文件)方法
  • 原文地址:https://blog.csdn.net/zhuxiao5/article/details/125524502
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号