如何从pyzbar解码返回的数组中提取data字段值‘812’
提取pyzbar解码结果中的data值
嘿,我来帮你搞定这个问题!首先咱们先理清楚你得到的barcode是什么:它是一个包含Decoded对象的列表,从你打印的结果外面包裹的[]就能看出来,所以它属于列表类型。
你之前尝试的print(barcode[Decoded(data)])写法不对,因为列表的索引得是整数(比如0、1这种),而且Decoded是类,不是具体的对象属性,所以这么写肯定会报错。
正确的提取步骤很简单:
- 从列表中取出对应的
Decoded对象(因为你只有一个QR码,所以取索引0的元素就行) - 访问这个对象的
.data属性——注意它返回的是bytes类型,如果你需要字符串的话,记得用.decode('utf-8')转成字符串
直接给你看可用的代码:
from pyzbar.pyzbar import decode from PIL import Image barcode = decode(Image.open('qr111.png')) # 取列表中的第一个Decoded对象 decoded_item = barcode[0] # 提取data并转成字符串 qr_data = decoded_item.data.decode('utf-8') print(qr_data) # 输出:812
如果你的图片里有多个QR码,那barcode列表里会有多个Decoded对象,你可以用循环来遍历提取每个的data:
for item in barcode: print(item.data.decode('utf-8'))
内容的提问来源于stack exchange,提问作者Julliard
相关产品推荐
相关产品推荐

