gpt4 book ai didi

python - 使用 mingw 构建 opencv。导入 cv2 时失败。 DLL 加载失败。寻找 .dll,但我有 .dll.a

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:48 24 4
gpt4 key购买 nike

我正在尝试使用 MSYS/MinGW 构建 OpenCV,以便我可以在 python 中使用 cv2 模块。我在 Windows 7 64 位上使用 32 位 Python 2.7。构建 OpenCV 有效,但我似乎无法在没有收到“ImportError:DLL 加载失败:找不到指定模块”的情况下使用它。导入cv2后。我已经调试了一段时间了,常见的谷歌解决方案似乎不起作用。

这些是我采取的步骤:

  • 从我的电脑上删除了所有其他的 opencv 实例(有几个)
  • 使用 CMake 构建 opencv,我手动设置了这些标志:

             'CMAKE_INSTALL_PREFIX'       : 'C:/Program Files (x86)/OpenCV'
    'CMAKE_BUILD_TYPE' : 'Release',
    'CMAKE_C_FLAGS' : '-m32',
    'CMAKE_CXX_FLAGS' : '-m32',
    'BUILD_opencv_gpu' : False,
    'BUILD_opencv_gpuarithm' : False,
    'BUILD_opencv_gpubgsegm' : False,
    'BUILD_opencv_gpucodec' : False,
    'BUILD_opencv_gpufeatures2d' : False,
    'BUILD_opencv_gpufilters' : False,
    'BUILD_opencv_gpuimgproc' : False,
    'BUILD_opencv_gpuoptflow' : False,
    'BUILD_opencv_gpustereo' : False,
    'BUILD_opencv_gpuwarping' : False
  • 我执行 cmake -G "MSYS Makefiles"...、make -j9,最后执行 make install。打印输出显示图书馆去了我期望的地方。

  • 我的路径包括

             C:\MinGW\bin
    C:\MinGW\msys\1.0\bin
    C:\MinGW\libexec\gcc\mingw32\4.6.2
    C:\Python27\
    C:\Python27\Scripts
    C:\Program Files (x86)\OpenCV
    C:\Program Files (x86)\OpenCV\lib
  • 我的 PYTHONPATH 包括

             C:\Python27\Lib\site-packages
    C:\Python27
  • 然后我复制

    • 来自 C:\Python\Lib\site-packages 的 cv2.pyd 和 libcv2.dll.a

    • C:\Program Files (x86)\OpenCV\lib 中的所有 libopencv_*249.dll.a

    • libgcc_s_dw2-1.dll libstdc++-6.dll 来自 C:\MinGW\bin

    • 我将所有这些移动到我命名为 cv2 的目录中

  • 在 cv2 目录中,我制作了一个包含以下代码的 __init__.py 文件:

         import os, sys
    from os.path import realpath, dirname
    tpl_cv2 = realpath(dirname(__file__))
    print(tpl_cv2)
    sys.path.insert(0,tpl_cv2)
    os.environ['PATH'] = tpl_cv2 + os.pathsep + os.environ['PATH']
    try:
    from cv2 import *
    except Exception as ex:
    print(repr(ex))
    print(os.environ['PATH'])
    print(sys.path)
    raise
  • 然后我打开一个 IPython 终端并输入命令“import cv2”

我收到错误:ImportError('DLL 加载失败:找不到指定的模块。',)


为了调试这个我有:

  • 我在 depends.exe 中加载了 cv2.pyd 文件它显示了

找不到 LIBOPENCV_CALIB3D249.DLL 和所有其他 opencv 库。但是,它们都与 cv2.pyd 位于同一目录中,并且在 PATH 和 PYTHONPATH 中。

但它们被命名为 .dll.a 因为我是用 MSYS/MinGW 编译的。我不明白为什么它要查找没有 .a 后缀的 .dll。我认为这可能与错误有关,但我不知道从这里去哪里。

  • 我还构建了一个小型 C++ 应用程序,它使用我构建的 OpenCV 进行读取和成像。它构建得很好,但我收到错误消息:程序无法启动,因为您的计算机缺少 libopencv_core249.dll。所以,我更确信这个 .dll.a 是问题所在。

  • 我试过简单地将库从 .dll.a 重命名为 .dll,但这没有用。

我希望有人能阐明这个问题。

最佳答案

我觉得自己很蠢。 dll 在“C:\Program Files (x86)\bin”中,而不是“C:\Program Files (x86)\lib”中,现在似乎可以使用了。

关于python - 使用 mingw 构建 opencv。导入 cv2 时失败。 DLL 加载失败。寻找 .dll,但我有 .dll.a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com