尝试加载 dll 时 OpenALPR Python 绑定失败

OpenALPR Python binding failing when trying to load dll

下载 openALPR 库 Windows 的预编译二进制文件后,运行安装源代码中包含的 setup.py,然后 运行安装python_test.bat 包含在预编译的二进制文件目录中我得到以下错误:

File "C:\Users\rhenriquez\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openalpr\openalpr.py", line 51, in __init__
    self._openalprpy_lib = ctypes.cdll.LoadLibrary("libopenalprpy.dll")
  File "C:\Users\rhenriquez\AppData\Local\Programs\Python\Python37-32\lib\ctypes\__init__.py", line 434, in LoadLibrary
    return self._dlltype(name)
  File "C:\Users\rhenriquez\AppData\Local\Programs\Python\Python37-32\lib\ctypes\__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: OSError: [WinError 193] %1 is not a valid Win32 application

当我开始 运行 脚本时,起初错误是 WinError 126 然后我注意到脚本试图调用的 dll (openalprpy.dll) 没有 "lib" 在其名称的开头,因此我将其添加到 dll 的名称中。然后它开始向我发送 WinError 193,从那时起我就不知道还能做什么或者我做错了什么。

如有任何帮助,我们将不胜感激。

编辑:所以我在 32 位版本上尝试了这个,它给出了与您遇到的相同的错误。这似乎是在使用 64 位 python 时尝试导入 32 位 .dll 的问题,反之亦然,如 Python Ctypes Load Library

中所示

/编辑

我确实让它在我的系统上工作...经过一些修改,这个包并不像它应该的那样 "plug and play"。

我不知道我哪里做对了,所以我只列出我做了什么:

从发行版下载预编译的二进制文件(我使用的是 openalpr-2.3.0-win-64bit.zip)https://github.com/openalpr/openalpr/releases

下载项目本身,https://github.com/openalpr/openalpr

解压两者。

转到 openalpr-master cd C:\openalpr-master\openalpr-master\src\bindings\python 和 运行 python setup.py install 中的绑定文件夹进行绑定。

然后导航到 site-packages 中的项目文件夹,很可能 C:\Users\rhenriquez\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openalpr\ 并在 IDLE 中打开 openalpr.py

您可以在此处将第 51 行从 self._openalprpy_lib = ctypes.cdll.LoadLibrary("libopenalprpy.dll") 更改为 self._openalprpy_lib = ctypes.cdll.LoadLibrary("openalprpy.dll"),因为如果您更改文件名,其他链接似乎已损坏。

我还发现将第 90 行更改为 except Exception: 是有益的,因为它不想正确导入并且不会引发 ImportError。

之后 python_test.bat 正常工作。

Namespace(config='openalpr.conf', country='us', plate_image='samples/us-1.jpg', runtime_data='runtime_data')
Using OpenALPR 2.3.0
Image size: 497x372
Processing Time: 561.825989
Plate #1
          Plate   Confidence
  -       THECAR   92.207481
  -       THEGAR   81.348961
  -        HECAR   80.229317
  -       TMECAR   78.159492
  -       THE0AR   77.702461
  -       THECAB   77.389000
  -        THEAR   76.510017
Press any key to continue . . .