6

首先,我知道这个类似的 SO Question但我的问题略有不同,该问题的答案并没有解决我的问题。所以,我在这里创建一个新帖子。

我已经从http://zbar.sourceforge.net/download.html下载了 Zbar Installer并成功安装(没有错误消息)。

但是,当我运行以下脚本时,

import zbar
from PIL import Image

# create a reader
scanner = zbar.ImageScanner()

# configure the reader
scanner.parse_config('enable')

# obtain image data
pil = Image.open('zbartest2.png').convert('L')
width, height = pil.size
raw = pil.tostring()

# wrap image data
image = zbar.Image(width, height, 'Y800', raw)

# scan the image for barcodes
scanner.scan(image)

# extract results
for symbol in image:
    # do something useful with results
    print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

# clean up
del(image)

它给了我一条错误消息,说 DLL 加载失败。

回溯(最近一次通话最后):

文件“D:\Profiles\e492507\Desktop\barcode reader\test.py”,第 1 行,在 import zbar ImportError: DLL load failed: 找不到指定的模块。

但与我上面提到的类似 SO 问题不同,当我在 python IDLE shell 中键入它时,它可以正常工作。

import zbar
zbar.version()

(0, 10)

是什么导致了问题,我该如何解决?

仅供参考:我在 windows Xp pro 32 位上使用 Python 2.7.3

更新:1

我发现如果我将脚本和图像复制到 python 目录C:\Python27\中,它可以正常工作,没有任何问题。

但是,一旦我将脚本和图像移动到其他地方,我就会收到与上面发布的相同的错误消息。

我应该如何解决这个问题,以便只要条形码图像可用,我就可以在计算机的任何位置执行我的脚本?

更新:2 (仅供参考:与问题没有直接关系)

到目前为止,我无法使用我发现的所有方法来解决这个问题。所以,我提出了自己的愚蠢解决方案。

我将使用一个简单的表格来reportlab代替,Barcodes并相应地为单元格着色(黑色表示 1,白色表示 0)以表示二进制数字。

所以,数字 69 将是这样的

在此处输入图像描述

然后,我可以PIL用来检测黑白方块并将其转换回二进制然后转换为十进制。仅供参考,我只处理十进制数字。没有字母或其他东西。我知道这很愚蠢,但绝望的时候需要采取绝望的措施:P

4

3 回答 3

3

当依赖的 DLL 在您的某个地方时,它听起来像是在工作,而PATH当您将它们移动到其他地方时它会中断。该错误特别说明它无法加载 DLL(或其依赖项之一),因此我认为这不是与 Windows 系统上记录的不稳定性有关的问题。

要消除这种可能性,请尝试以下操作:

  1. 右键单击我的电脑,然后单击属性
  2. 单击高级选项卡。
  3. 单击环境变量
  4. 找到并选择PATH条目,然后单击编辑

在显示Variable value的对话框中,添加分号,然后添加libzbar-0.dll已安装文件夹的路径。

所以,如果libzbar-0.dll在,说,C:\ZBar\Bin你现有的PATH价值是:

C:\folder1;C:\folder2;C:\some other folder

然后将变量值更改为:

C:\folder1;C:\folder2;C:\some other folder;C:\ZBar\Bin

然后单击“确定”以保存所有更改并 - 对于过度杀伤 - 重新启动。这是因为大多数应用程序仅在首次启动时才读取环境变量,例如,如果您不确定应用程序是否真的重新启动或只是被最小化,有时会让人感到困惑。

现在看看是否可以从其他文件夹运行 Python 脚本。

于 2013-12-18T13:36:08.343 回答
1

zbar您安装的 Windows 版本( zbar-0.10-setup.exe) 包括其文件中所述的“仅命令行程序”。README.windows它还在Windows 安装指南的运行 ZBar部分中提到“ZBar 的当前(0.10)版本仅附带命令行程序” 。

ZBar 条形码阅读器 - 下载页面的Windows 安装程序部分中,它显示:     “请注意,Windows 端口处于不稳定的测试阶段。”

换句话说,它还不能用于 Windows 版本的 Python 解释器。

于 2013-12-16T18:08:42.500 回答
-1

要解决.dll错误,需要安装C++依赖,点击以下链接下载:

https://www.microsoft.com/en-US/download/details.aspx?id=40784

于 2021-06-07T14:54:59.747 回答