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

Pyzbar二维码实时检测代码运行失败问题求助

实时二维码检测报错解决

问题代码

我用来实现实时二维码检测的代码如下:

import cv2
import numpy as np
from pyzbar.pyzbar import decode

cap = cv2.VideoCapture(0)

cap.set(3, 640)
cap.set(4, 480)

while True:
    success, img = cap.read()
    for barcode in decode(img):
        myData = barcode.data.decode('utf-8')
        print (myData)
        pts = np.array([barcode.polygon], np.int32)
        pts = pts.reshape((-1,1,2))
        cv2.polylines(img, [pts], True, (255,0,255),5)
        
    cv2.imshow('Result',img)
    cv2.waitKey(1)

报错信息

运行后抛出以下错误:

回溯(最近的调用最后):
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\zbar_library.py", 第58行, 在load函数中
    dependencies, libzbar = load_objects(Path(''))
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\zbar_library.py", 第50行, 在load_objects函数中
    deps = [
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\zbar_library.py", 第51行, 在列表推导式中
    cdll.LoadLibrary(str(directory.joinpath(dep)))
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", 第452行, 在LoadLibrary函数中
    return self._dlltype(name)
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", 第374行, 在__init__函数中
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: 找不到模块 'libiconv.dll' (或它的某个依赖项)。请尝试使用完整路径的构造函数语法。

在处理上述异常期间,又发生了另一个异常:

回溯(最近的调用最后):
  文件 "C:\Users\BEYZANUR\Projeler\Teknofest\e.py", 第3行, 在<module>中
    from pyzbar.pyzbar import decode
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\pyzbar.py", 第7行, 在<module>中
    from .wrapper import (
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\wrapper.py", 第151行, 在<module>中
    zbar_version = zbar_function(
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\wrapper.py", 第148行, 在zbar_function函数中
    return prototype((fname, load_libzbar()))
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\wrapper.py", 第127行, 在load_libzbar函数中
    libzbar, dependencies = zbar_library.load()
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\zbar_library.py", 第60行, 在load函数中
    dependencies, libzbar = load_objects(Path(__file__).parent)
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\zbar_library.py", 第54行, 在load_objects函数中
    libzbar = cdll.LoadLibrary(str(directory.joinpath(fname)))
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", 第452行, 在LoadLibrary函数中
    return self._dlltype(name)
  文件 "C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", 第374行, 在__init__函数中
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: 找不到模块 'C:\Users\BEYZANUR\AppData\Local\Programs\Python\Python39\lib\site-packages\pyzbar\libzbar-64.dll' (或它的某个依赖项)。请尝试使用完整路径的构造函数语法。

解决办法

方案1:安装带Windows依赖的pyzbar版本

卸载现有pyzbar:

pip uninstall pyzbar -y

安装适配Windows的版本:

pip install pyzbar-windows

方案2:手动补充缺失的DLL文件

  • 找到libiconv.dll和libzbar-64.dll文件
  • 将它们放置到以下任意目录:
    • Python安装目录下的Scripts文件夹
    • 你的项目代码所在目录
    • 添加到系统环境变量Path对应的路径中

方案3:改用OpenCV内置的二维码检测器(无需额外依赖)

修改代码为以下形式,直接使用cv2.QRCodeDetector:

import cv2

cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)

qr_detector = cv2.QRCodeDetector()

while True:
    success, img = cap.read()
    if not success:
        break
    
    data, bbox, _ = qr_detector.detectAndDecode(img)
    if data:
        print(data)
        # 绘制二维码边框
        if bbox is not None:
            bbox = np.int32(bbox)
            cv2.polylines(img, [bbox], True, (255,0,255), 5)
    
    cv2.imshow('Result', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:47:21