尝试加载 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 . . .
下载 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 . . .