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

时间:2019-01-23 17:17:21

标签: python python-3.x windows openalpr

下载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,从那以后我一无所知,该怎么办还是我做错了什么。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

编辑:因此,我尝试使用32位版本进行此操作,它给出了您遇到的相同错误。这似乎是尝试使用64位python导入32位.dll的问题,反之亦然,如Python Ctypes Load Library

中所示

/ EDIT

我确实可以在我的系统上运行它……经过一些修改,该程序包并不像应有的那样即插即用。

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

从发行版中下载预编译的二进制文件(我使用过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进行绑定。

然后导航至站点包中的项目文件夹,最有可能是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 . . .