下载openALPR库的Windows预编译二进制文件后,运行源代码中包含的setup.py进行安装,并运行预编译二进制目录中包含的python_test.bat,我得到以下错误:
File "C:UsersrhenriquezAppDataLocalProgramsPythonPython37-32libsite-packagesopenalpropenalpr.py", line 51, in __init__
self._openalprpy_lib = ctypes.cdll.LoadLibrary("libopenalprpy.dll")
File "C:UsersrhenriquezAppDataLocalProgramsPythonPython37-32libctypes__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "C:UsersrhenriquezAppDataLocalProgramsPythonPython37-32libctypes__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,从那时起,我一直不知道该做什么,或者我做错了什么。
如有任何帮助,我们将不胜感激。
EDIT:所以我在32位版本中尝试了这个,它给出了与您遇到的相同的错误。这似乎是在使用64位python时尝试导入32位.dll的问题,反之亦然,如python Ctypes加载库中所示
/编辑
我确实让它在我的系统上工作。。。经过一些修改,这个包并不像它应该的那样"即插即用"。
我不知道我去了哪里,所以我只列出我做了什么:
从发行版下载预编译的二进制文件(我使用了openalpr-2.3.0-win-64bit.zip)https://github.com/openalpr/openalpr/releases
下载项目本身,https://github.com/openalpr/openalpr
打开两者的拉链。
转到openalpr mastercd C:openalpr-masteropenalpr-mastersrcbindingspython
中的bindings文件夹,然后运行python setup.py install
进行绑定。
然后导航到站点包中的项目文件夹,很可能是C:UsersrhenriquezAppDataLocalProgramsPythonPython37-32libsite-packagesopenalpr
,并在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 . . .