Сбой привязки OpenALPR Python при попытке загрузить DLL - PullRequest
0 голосов
/ 23 января 2019

После загрузки предварительно скомпилированных двоичных файлов для Windows из библиотеки openALPR, запуска 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 голосов
/ 23 января 2019

РЕДАКТИРОВАТЬ: Итак, я попробовал это с 32-битной версией, и она выдает ту же ошибку, с которой вы столкнулись.Похоже, это проблема при попытке импортировать 32-битную DLL-библиотеку при использовании 64-битного Python или наоборот, как показано в 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, чтобы сделать привязки.

Затем перейдите к папке проекта в site-package, скорее всего, C:\Users\rhenriquez\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openalpr\ и откройте openalpr.py в IDLE,

, здесь вы можете изменить строку 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 . . .
...