当前位置: 首页 > news >正文

Python Opencv实践 - 二维码和条形码识别

        使用pyzbar模块来识别二维码和条形码。ZBar是一个开源软件,用来从图像中读取条形码,支持多种编码,比如EAN-13/UPC-A、UPC-E、EAN-8、代码128、代码39、交错2/5以及二维码。

        pyzbar是python封装ZBar的模块,我们用它来做条形码和二维码的识别。

        安装方法:

        

平台安装方法
Windows

使用pip安装即可

pip install pyzbar

Ubuntu

sudo apt-get install libzbar-dev

pip install zbar

参考:

ubuntu中安装zbar_ubuntu 安装libzbar依赖-CSDN博客

        python识别二维码并绘制边框和文字的代码:

import matplotlib.pyplot as plt
import numpy as np
import cv2 as cv
from pyzbar.pyzbar import decode

#读取二维码图像
img = cv.imread('../../SampleImages/QRCodes.jpg')

QRCodes = decode(img)
for QRCode in QRCodes:
    print(QRCode)
    stringData = QRCode.data.decode('utf-8')
    print("二维码字符串是:\"" + stringData + "\"")
    #绘制出二维码边框
    points = np.array([QRCode.polygon], np.int32)
    #numpy reshape: https://blog.csdn.net/DocStorm/article/details/58593682
    points = points.reshape((-1,1,2))
    cv.polylines(img, [points], True, (0,255,0), 5)
    rectPoints = QRCode.rect
    cv.putText(img, stringData, (rectPoints[0], rectPoints[1]), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255), 2)

plt.imshow(img[:,:,::-1])

运行结果(最后的二维码是残缺的,因此未识别): 

        识别条形码的代码和识别二维码的代码是一样的:

#读取条形码图像
img = cv.imread('../../SampleImages/BARCodes.png')

BARCodes = decode(img)
for BARCode in BARCodes:
    print(QRCode)
    stringData = BARCode.data.decode('utf-8')
    print("条形码字符串是:\"" + stringData + "\"")
    #绘制出二维码边框
    points = np.array([BARCode.polygon], np.int32)
    #numpy reshape: https://blog.csdn.net/DocStorm/article/details/58593682
    points = points.reshape((-1,1,2))
    cv.polylines(img, [points], True, (0,255,0), 5)
    rectPoints = BARCode.rect
    cv.putText(img, stringData, (rectPoints[0] - 20, rectPoints[1] - 5), cv.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)

plt.imshow(img[:,:,::-1])

         识别结果:

http://www.dtcms.com/a/4567.html

相关文章:

  • 模拟shell小程序
  • 【Linux】共享内存
  • Fiddler 无法抓包手机 https 报文的解决方案来啦!!
  • 如何应用ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作??
  • 微软离Altman越近,离OpenAI就越远!
  • OpenAI 曾收到 AI 重大突破警告;半独立的 OpenAI 比与微软合并更好丨 RTE 开发者日报 Vol.91
  • 网络安全(黑客)-自学手册
  • Mistral 7B 比Llama 2更好的开源大模型 (四)
  • sql添加索引
  • python之pyqt专栏2-项目文件解析
  • macos端文件夹快速访问工具 Default Folder X 最新for mac
  • 深度学习之生成唐诗案例(Pytorch版)
  • 华为云之在Linux系统下安装可视化界面
  • 被动接受需求
  • 【正点原子STM32连载】第五十九章 T9拼音输入法实验(Julia分形)实验 摘自【正点原子】APM32F407最小系统板使用指南
  • 竞赛 题目:基于深度学习的手势识别实现
  • 周总结2023-11-24
  • TMUX设置鼠标滚轮滑动来浏览之前的前面内容
  • Python BDD 框架比较之 pytest-bdd vs behave
  • Linux安装Mysql详细教程(两种安装方法)
  • 如何使用rclone将腾讯云COS桶中的数据同步到华为云OBS
  • Docker实践笔记7:构建MySQL 8镜像
  • Linux下的C++ socket编程实例
  • 有关Vue、微信小程序、UniApp中的CSS中的宽度width单位、自适应
  • NSGA-II求解微电网多目标优化调度(MATLAB)
  • CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置
  • Redis-Redis缓存高可用集群
  • 自监督LIGHTLY SSL教程
  • 【前端学java】Java中的异常处理(15)完结
  • 【每日一题】2824. 统计和小于目标的下标对数目-2023.11.24