导入 cv2 时 DLL 加载失败

时间:2021-01-09 19:40:52

标签: python opencv gstreamer-1.0 cmake-gui

我在使用 GStreamer 功能从源代码构建 OpenCV 时遇到了这个错误。 这是错误:

Python 3.8.7 (tags/v3.8.7:6503f05, Dec 21 2020, 17:59:51) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python38\lib\site-packages\cv2\__init__.py", line 102, in <module>
 bootstrap()
File "C:\Program Files\Python38\lib\site-packages\cv2\__init__.py", line 90, in bootstrap
 import cv2
ImportError: DLL load failed while importing cv2: Belirtilen modül bulunamadı.
>>>

我的设置是:
Gstreamer 1.18.2(我尝试了 MinGW 64 位和 MSVC 64 位相同的结果)
Python 3.8
OpenCV 4.5.1

到目前为止我做了什么:

  1. 我将正在加载模块的 init.py 文件更改为调试模式,这是我发现的:
>>> import cv2
OpenCV loader: os.name="nt"  platform.system()="Windows"
OpenCV loader: loading config: C:\Program Files\Python38\lib\site-packages\cv2\config.py
OpenCV loader: loading config: C:\Program Files\Python38\lib\site-packages\cv2\config-3.8.py
OpenCV loader: PYTHON_EXTENSIONS_PATHS=['C:/Program Files/Python38/Lib/site-packages/cv2\\python-3.8']
OpenCV loader: BINARIES_PATHS=['D:/build6/install\\x64/vc16/bin']
OpenCV loader: PATH=D:/build6/install\x64/vc16/bin;C:\Program Files\Python38\Scripts\;C:\Program Files\Python38\;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\libnvvp;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\PuTTY\;C:\Program Files\NVIDIA Corporation\Nsight Compute 2020.2.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\CMake\bin;C:\gstreamer\1.0\mingw_x86_64\bin;C:\gstreamer\1.0\mingw_x86_64\lib;C:\gstreamer\1.0\mingw_x86_64\lib\gstreamer-1.0;D:\build6\install\x64\vc16\staticlib;D:\build6\install\x64\vc16\bin;C:\Users\searo\AppData\Local\Microsoft\WindowsApps;C:\Users\searo\AppData\Local\Programs\Microsoft VS Code\bin;C:\gstreamer\1.0\mingw_x86_64\bin;C:\gstreamer\1.0\mingw_x86_64\lib;C:\gstreamer\1.0\mingw_x86_64\lib\gstreamer-1.0;D:\build6\install\x64\vc16\bin;D:\build6\install\x64\vc16\staticlib;C:\Windows\system32;
OpenCV loader: replacing cv2 module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python38\lib\site-packages\cv2\__init__.py", line 102, in <module>
    bootstrap()
  File "C:\Program Files\Python38\lib\site-packages\cv2\__init__.py", line 90, in bootstrap
    import cv2
ImportError: DLL load failed while importing cv2: Belirtilen modül bulunamadı.
  1. 我认为这是路径问题,因为我用 Dependency Walker 打开了 cv2.cp38-win_amd64.pyd 文件以查找丢失的 DLL,我发现许多看起来丢失的 DLL 都在 System32 文件夹中。 Missing DLLs
  2. 因为我认为这是一个路径问题,所以我的路径看起来不错。当我在没有 GStreamer 功能的情况下构建 OpenCV 时,它完全正常工作。即使我使用额外的 contrib 模块和 CUDA 构建 OpenCV。 我的用户和系统变量:

System PATHs
System and Enviroment Variables
User PATHs

我好几个星期都无法解决这个问题。我今天找到了另一个解决方案,但我真的希望 OpenCV 与 GStreamer 一起工作。如果有人能解决我会很高兴。

0 个答案:

没有答案