利用Opencv+Python 实现二维码识别

 

pip3 install pyzbar
 
准备工作:
二维码图片,我这里直接打印在了一张A4纸上,或者直接在草料网站上生成 草料二维码生成器,存放在手机上进行显示。在安装条码扫描库的时候大家注意:zbar库只针对 python2 版本有支持,python3已经不再支持。课程中使用的是python3,所以我们只能安装 pyzbar,安装命令如下:
 
pip3 install pyzbar
实现目标
利用摄像头识别二维码中的内容并打印出来,同时兼容识别条形码内容
打开pycharm开发工具,在项目中新建 code.py 文件,文件代码如下:
 
# -*- coding:utf-8 –*-
import cv2
import pyzbar.pyzbar as pyzbar
 
def decodeDisplay(video):
    # 转为灰度图像
    gray = cv2.cvtColor(video, cv2.COLOR_BGR2GRAY)
    barcodes = pyzbar.decode(gray)
    for barcode in barcodes:
        # 提取二维码的位置,然后用边框标识出来在视频中
        (x, y, w, h) = barcode.rect
        cv2.rectangle(video, (x, y), (x + w, y + h), (0, 255, 0), 2)
        # 字符串转换
        barcodeData = barcode.data.decode("utf-8")
        barcodeType = barcode.type
        # 在图像上面显示识别出来的内容
        text = "{}".format(barcodeData)
        cv2.putText(video, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,1, (0, 255, 0), 2)
        # 打印识别后的内容
        print("[扫描结果] 二维码类别: {0} 内容: {1}".format(barcodeType, barcodeData))
    cv2.imshow("cam", video)
 
def detect():
    cv2.namedWindow("cam",cv2.WINDOW_NORMAL)
    cam = cv2.VideoCapture(0)
    while True:
        # 读取当前帧
        ret, frame = cam.read()
        decodeDisplay(frame)
        # 按ESC键退出
        if(cv2.waitKey(5)==27):
            break
    cam.release()
    cv2.destroyAllWindows()
 
if __name__ == '__main__':
    detect()

 

 
posted @ 2022-04-16 15:48  cqmcu_yth  阅读(644)  评论(0编辑  收藏  举报