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

本文介绍了如何使用Python的pyzbar模块来识别二维码和条形码,包括安装方法和代码示例,展示了如何读取图像、解码数据并绘制边框和文字。
摘要由CSDN通过智能技术生成

        使用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])

         识别结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦枫Leonlew

希望这篇文章能帮到你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值