当前位置: 首页 > 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])

         识别结果:

相关文章:

  • 模拟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详细教程(两种安装方法)
  • 观察|“双雄”格局下电池制造商如何生存:加码不同技术、抢滩新赛道
  • 技术派|更强的带刀侍卫:从054B型战舰谈谈世界护卫舰发展
  • AI观察|从万元到百万元,DeepSeek一体机江湖混战
  • 铁路部门:确保沿线群众安全,焦柳铁路6个区段将陆续安装防护栅栏
  • 江西吉水通报一男子拒服兵役:不得考公,两年内经商、升学等受限
  • 上海能源科技发展有限公司原董事长李海瑜一审获刑13年