在用Python通过pyzbar、OpenCV识别二维码,对 部分中文内容 出现乱码,通过几次尝试发现,可以在内容里添加 部分中文符号 ,可以解决这个问题!
具体的有用的中文符号大家可以代入下面尝试一下
版本:
Python 3.7.6
-opencv-python 4.1.2.30
pyzbar 0.1.8
代码如下:
# -*- 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