Opencv — 读取二维码,条形码信息

大家好,这篇文章我们使用opencv的一些算法来实现读取二维码以及条形码信息的功能。

生成二维码

在此,我以二维码的识别举例。首先,我们使用二维码生成器生成两个二维码,一个定义一个英文单词Winter,另一个定义一个网站名称。如图所示:

在此我们自己定义命名的二维码已经生成。接下来我们编写代码,实现摄像头读取二维码信息的功能。

代码

import cv2
import numpy as np
from pyzbar.pyzbar import decode   ###导入解码器,获取二维码并识别

cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)
while True:
    success, img = cap.read()
    for barcode in decode(img):
        myData = barcode.data.decode('utf-8')   ###解码
        print(myData)    ###myData可以是文本、数字、网站、others
        pts = np.array([barcode.polygon],np.int32)
        pts = pts.reshape((-1,1,2))
        cv2.polylines(img,[pts],True,(255,0,255),5)
        pts2 = barcode.rect
        cv2.putText(img,myData,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,
                    0.9,(255,0,255))

    cv2.imshow('Result',img)
    cv2.waitKey(1)
cap.release()
cv2.destroyAllWindows()

代码功能解释

  1. import cv2: 导入OpenCV库,用于图像处理。
  2. import numpy as np: 导入NumPy库,用于数值计算。
  3. from pyzbar.pyzbar import decode: 导入pyzbar库中的decode函数,用于解码二维码。
  4. cap = cv2.VideoCapture(0): 打开摄像头设备,0表示默认摄像头,如果有多个摄像头可以切换设备号。
  5. cap.set(3,640) 和 cap.set(4,480): 设置捕获图像的宽度和高度为640x480像素。
  6. while True:: 进入无限循环,持续捕获并处理图像。
  7. success, img = cap.read(): 从摄像头中读取一帧图像,success表示读取成功与否,img是捕获的图像。
  8. for barcode in decode(img):: 使用pyzbar库中的decode函数识别图像中的所有二维码。
  9. myData = barcode.data.decode('utf-8'): 解码二维码中的数据为UTF-8格式的字符串。myData可以是文本、数字、网站,以及其它。
  10. print(myData): 打印解码得到的数据到控制台。
  11. 绘制二维码的边界框:
    • pts 获取二维码的多边形轮廓。
    • cv2.polylines() 绘制多边形轮廓。
  12. 在二维码上方显示解码得到的数据:
    • cv2.putText() 在图像上绘制文字,显示二维码中的解码数据。

这段代码的作用是实时从摄像头捕获图像,检测其中的二维码并解码,然后在图像上标注二维码的位置并显示解码得到的数据。

结果显示

如图所示,二维码信息已经被我们读取。本篇文章简单实现了二维码解码功能,在下篇文章我们一起学习创建一个“二维码的识别”项目。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值