其他分享
首页 > 其他分享> > pyzbar报错解决方法:WARNING: .\zbar\decoder\pdf417.c:89: <unknown>:

pyzbar报错解决方法:WARNING: .\zbar\decoder\pdf417.c:89: <unknown>:

作者:互联网

使用pyzbar识别手机拍摄的图片中的二维码,报错:WARNING: .\zbar\decoder\pdf417.c:89: <unknown>:

网上搜到的一个解决报错方法:

from PIL import Image
from pyzbar.pyzbar import decode
from pyzbar.pyzbar import ZBarSymbol

im = Image.open(path) 

#报错是因为使用了PDF417
#关键在于遍历图片所有二维码时指定使用QRCODE

for barcode in decode(im,symbols=[ZBarSymbol.QRCODE]):   
        barcodeData = barcode.data.decode("utf-8")
        print(barcodeData)

使用该方法后虽然不会再出现pdf417报错,但是二维码还是识别不出来,然后歪打正着摸索出一个方法就是先用Image读取并另存为一个新的图片,再对新图片进行二维码识别

import os
from PIL import Image
from os import listdir

def xj(path):
    a = os.path.exists(path)
    if not a :
        os.makedirs(path)

def newpic(path,path_2):
    im = Image.open(path)
    im.save(path_2)
    
#获取当前路径
path_pic = os.path.dirname(os.path.abspath(__file__))

#新建文件夹newpic的路径
path_new = path_pic + r'\newpic'

#新建文件夹newpic
xj(path_new)

#遍历当前路径中所有的jpg文件并且保存到新文件夹newpic中
for file_name in listdir(path_pic):
    if file_name.endswith('.jpg'):
        path_now = path_pic + f'\{file_name}'
        path_then = path_new + f'\{file_name}'
        newpic(path_now,path_then)

对新建文件夹newpic中的图片执行第一段代码就可以成功识别出二维码了,甚至可以直接decode(im),都不需要symbols=[ZBarSymbol.QRCODE]来解决报错,虽然歪打正着得到了想要的效果但是不明所以,等一个好心人来解答一下这里面的原理。

标签:os,unknown,pyzbar,89,报错,path,import,newpic
来源: https://blog.csdn.net/wuhuafeiniu/article/details/123648424