Python利用pyzbar、OpenCV识别二维码中文内容乱码

在用Python通过pyzbar、OpenCV识别二维码,对 部分中文内容 出现乱码,通过几次尝试发现,可以在内容里添加 部分中文符号 ,可以解决这个问题!
具体的有用的中文符号大家可以代入下面尝试一下
版本:
Python 3.7.6
-opencv-python 4.1.2.30
pyzbar 0.1.8
Python利用pyzbar、OpenCV识别二维码中文内容乱码_第1张图片Python利用pyzbar、OpenCV识别二维码中文内容乱码_第2张图片代码如下:

# -*- coding:utf-8 -*-
# author: Ueliang  time:2020/2/11
import cv2 as cv
from pyzbar import pyzbar as pyzbar
import qrcode
data = "木林森"
img = qrcode.make(data=data)
# img.show()
img.save("img.png")

# import cv2 as cv
# from pyzbar import pyzbar as pyzbar
#
# import qrcode
# qr = qrcode.QRCode(
#     version=1, #二维码的格子矩阵大小
#     error_correction=qrcode.constants.ERROR_CORRECT_L,
#     box_size=10,
#     border=4,
# )
# qr.add_data('啦啦啦啦德玛西亚')#向二维码添加数据
# qr.make(fit=True)
# img = qr.make_image()#fill_color="red", back_color="white")#更改QR的背景和绘画颜色
# img.save('img.png')#保存图片

def decodeDisplay(image):
    barcodes = pyzbar.decode(image)
    for barcode in barcodes:
        # 提取二维码的边界框的位置
        # 画出图像中条形码的边界框
        (x, y, w, h) = barcode.rect
        cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)

        # 提取二维码数据为字节对象,所以如果我们想在输出图像上
        # 画出来,就需要先将它转换成字符串
        barcodeData = barcode.data.decode("UTF8")
        barcodeType = barcode.type

        # 绘出图像上条形码的数据和条形码类型
        text = "{} ({})".format(barcodeData, barcodeType)
        cv.putText(image, text, (x, y - 10), cv.FONT_HERSHEY_SIMPLEX,.5, (0, 0, 125), 2)
        # 向终端打印条形码数据和条形码类型
        print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
    return image

def detect():
    camera = cv.imread("img.png")
    gray = cv.cvtColor(camera, cv.COLOR_BGR2GRAY)
    im = decodeDisplay(gray)
    cv.imshow("camera", im)
    cv.waitKey(0)
    cv.destroyAllWindows()

if __name__ == '__main__':
    detect()

参考资料:
https://zhuanlan.zhihu.com/p/77663804
https://www.cnblogs.com/linjiqin/p/4140455.html

你可能感兴趣的:(二维码,python,opencv)