从源代码成功构建 Opencv,但无法导入到 anaconda 中的 python

Built Opencv from source successfully, but can't import to python in anaconda

我想将 opencv 与 GPU 结合使用以加快速度。所以我遵循了一些关于如何从源代码构建 opencv 以及 CUDA 和 cudnn 的教程。

我跟着这个tutorial没有任何问题,直到他

import cv2 在他的终端

我的终端显示在python环境中找不到cv2。

Python 3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'

我找了原因,发现了一些端倪。 这个post说明他遇到了和我一样的问题

从使用 Cmake GUI 创建构建文件夹后 OpenCV.lsn 中没有 binding 文件夹开始

此外,我的 build/bin/release/opencv_version_win32.exe 的构建会话下没有 python2 或 python3,而是它们处于不可用会话中。

然而,我花了几个小时试图找到有效的解决方案,但仍然找不到任何可以帮助我的东西。所以我希望有人也遇到了这个问题,可以帮助我解决这个问题。

经过一番挖掘,我发现了一些非常有趣的东西。通过Whosebug、github和opencv官网看到很多关于缺少python解释器和相关库的建议。

所以我只是想尝试一下,发现基础 python 解释器中缺少我的 numpy,并在我尝试导入时显示以下错误numpy.

The error is the same as this post (I can't reproduce the error anymore, so I will link it for you to see)

In order to check this, you cannot just import numpy from base environment. You have to go to C:\{MY DIRECTORY}\anaconda3\python.exe, click the file python.exe and try to import numpy

我以前从未注意到这一点,因为我总是在 Anaconda 创建的虚拟环境中工作,所以 numpy 已经在那里了。 (我不知道遇到这个问题的每个人是否总是这样,我不知道对于那些不使用 anaconda 的人来说这是否是相同的解决方案)

我所要做的就是找到我的 Anaconda 基础库的路径(在我的例子中是)

C:\{MY DIRECTORY}\anaconda3\Library\bin

复制路径并添加到系统PATH中。

之后,我再次重做 CMake 构建过程,一切正常!!!

希望这对遇到同样问题的其他人有所帮助。