You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyzbar无法识别CODE-128条形码,如何在Python中读取?

解决pyzbar无法读取特定CODE-128条形码的问题

针对你遇到的pyzbar无法读取部分CODE-128条形码的情况,可以尝试以下几种方案:

1. 图像预处理提升识别率

pyzbar对图像的对比度、灰度表现较为敏感,直接读取彩色图可能识别失败。通过灰度化+二值化预处理,能强化条形码的黑白边界,提升识别成功率:

from pyzbar import pyzbar
import cv2

img = cv2.imread("example/path")
# 转换为灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 自适应二值化处理,适配光照不均的情况
binary_img = cv2.adaptiveThreshold(
    gray_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2
)

# 先尝试不指定条形码类型,让库自动检测所有支持的格式
barcodes = pyzbar.decode(binary_img)
# 若确认是CODE128,也可指定:barcodes = pyzbar.decode(binary_img, symbols=[pyzbar.ZBarSymbol.CODE128])

if barcodes:
    for barcode in barcodes:
        print(f"识别内容:{barcode.data.decode('utf-8')}")
        print(f"条形码类型:{barcode.type}")
else:
    print("未识别到条形码")

2. 换用OpenCV官方条形码检测模块

OpenCV的contrib库中提供了BarcodeDetector模块,对部分特殊格式的条形码兼容性更好。需要先安装依赖:

pip install opencv-contrib-python

使用代码示例:

import cv2

img = cv2.imread("example/path")
detector = cv2.barcode.BarcodeDetector()
# 检测并解码
success, decoded_info, decoded_types, _ = detector.detectAndDecode(img)

if success:
    for info, code_type in zip(decoded_info, decoded_types):
        print(f"识别内容:{info}")
        print(f"条形码类型:{code_type}")
else:
    print("未识别到条形码")

3. 排查图像基础问题

确认图像路径正确、图像文件未损坏(可通过cv2.imshow查看加载后的图像),避免因加载失败导致识别为空。

内容的提问来源于stack exchange,提问作者Foreen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:10:23