J'ai une situation très similaire à celle du Error "ImportError: DLL load failed: %1 is not a valid Win32 application", mais la réponse là-bas ne fonctionne pas pour moi.
Mon code Python indique :
import cv2
Mais cette ligne provoque l'erreur affichée dans le titre de cette question.
J'ai installé OpenCV dans C:\lib\opencv
sur cette machine 64 bits. J'utilise Python 64 bits.
Ma variable PYTHONPATH : PYTHONPATH=C:\lib\opencv\build\python\2.7
. Ce dossier contient cv2.pyd
et c'est tout.
Ma variable PATH : Path=%OPENCV_DIR%\bin;...
Ce dossier contient 39 fichiers DLL tels que opencv_core246d.dll
.
OPENCV_DIR a cette valeur : OPENCV_DIR=C:\lib\opencv\build\x64\vc11
.
La solution sur Error "ImportError: DLL load failed: %1 is not a valid Win32 application" dit d'ajouter "le nouveau chemin des binaires opencv (C:\opencv\build\bin\Release
) à la variable d'environnement PATH de Windows". Mais comme indiqué ci-dessus, j'ai déjà le dossier des binaires OpenCV (C:\lib\opencv\build\x64\vc11\bin
) dans mon PATH. Et mon installation OpenCV n'a pas de dossiers Release (sauf un vide sous build/java).
Qu'est-ce qui ne va pas ? Puis-je dire à Python de tracer de manière verbose le processus de chargement ? Quels fichiers DLL exactement recherche-t-il ?
J'ai remarqué que, selon http://www.dependencywalker.com/, le cv2.pyd
dans C:\lib\opencv\build\python\2.7
est en 32 bits, alors que la machine et le Python que j'utilise sont en 64 bits. Est-ce que ça pourrait être le problème ? Et si oui, où puis-je trouver une version 64 bits de cv2.pyd ?