【问题标题】:Install Opencv from source to conda environment从源代码安装 Opencv 到 conda 环境
【发布时间】:2020-08-04 06:54:53
【问题描述】:

我想从源代码将 opencv 安装到我的 conda 环境中。由于我使用的是 Jetson,因此没有可用于 opencv 的 pip 或 conda 包。

我使用这个命令从源安装,

    -D BUILD_EXAMPLES=OFF
    -D BUILD_opencv_python2=ON
    -D BUILD_opencv_python3=ON
    -D CMAKE_BUILD_TYPE=RELEASE
    -D CMAKE_INSTALL_PREFIX=${PREFIX}
    -D CUDA_ARCH_BIN=5.3,6.2,7.2
    -D CUDA_ARCH_PTX=
    -D CUDA_FAST_MATH=ON
    -D CUDNN_VERSION='8.0'
    -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 
    -D ENABLE_NEON=ON
    -D OPENCV_DNN_CUDA=ON
    -D OPENCV_ENABLE_NONFREE=ON
    -D OPENCV_EXTRA_MODULES_PATH=/tmp/build_opencv/opencv_contrib/modules
    -D OPENCV_GENERATE_PKGCONFIG=ON
    -D WITH_CUBLAS=ON
    -D WITH_CUDA=ON
    -D WITH_CUDNN=ON
    -D WITH_GSTREAMER=ON
    -D WITH_LIBV4L=ON
    -D WITH_OPENGL=ON"

如何将 python 依赖项安装到我的 conda 环境而不是将其安装到 usr/local/python

【问题讨论】:

  • Jetson 是什么架构,有 Conda 但不能使用conda-forge::opencv?至少,the Conda Forge recipe,尤其是meta.yamlbuild.sh,对于如何使用和编译到 Conda 中应该是非常有用的参考点。

标签: python opencv conda


【解决方案1】:

默认情况下,它将安装到您的系统 Python 路径,您可以通过输入:

which python

在终端中。在您的 cmake 命令(您发布的上述列表)中,您需要告诉它您要构建到哪个 python 可执行文件路径。目前,您的构建指向上述默认 Python 位置,现在您希望将其指向您的 Conda Python 路径。例如,我在 Anaconda 中的 Python 环境的基本路径是:

/home/robert/anaconda3/

您可以通过在终端中输入以下内容来获取您的 Anaconda 环境及其位置的列表:

conda env list

为此,您需要更新 cmake 命令以告诉它您要构建的 Python 路径的位置。我之前使用过post 来帮助我正确指定 Python 可执行文件构建路径,并且在为 venv 指定 Python 路径时它对我有用。

例如,如果我想安装到我的 Anaconda 环境之一,我会在我的 cmake 中执行以下操作:

-D PYTHON_DEFAULT_EXECUTABLE=$(/home/robert/anaconda3/envs/venv_openvcv/python3)

当你构建 cmake 时,滚动浏览输出并特别注意下面的行:

Python (for build): /home/robert/anaconda3/envs/venv_openvcv/python3

这是您确认是否要将 opencv 构建到正确的 Python 可执行文件(您指定的 Anaconda 可执行文件)的方式。

编辑:此外,这里还有一个教程,其中详细概述了为 Anaconda 环境编译 OpenCV 的步骤 - Installing OpenCV for Conda Virtual Environments

【讨论】:

  • 基本上我从这里收集到的信息是,为此需要告诉cmake 命令有关 conda 环境结构的所有信息(lib、include、bin 等目录的路径)工作,而不仅仅是遵循只提供 conda 环境的根的幼稚想法。当我认为 cmake 不应该对工具 conda 有任何了解时,这实际上是有道理的。
【解决方案2】:

在 Ubuntu 20.04 上,这在一个新的干净构建目录中对我有用:

export CPLUS_INCLUDE_PATH=$CONDA_PREFIX/lib/python3.8
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
    -D PYTHON3_LIBRARY=$CONDA_PREFIX/lib/python3.8 \
    -D PYTHON3_INCLUDE_DIR=$CONDA_PREFIX/include/python3.8 \
    -D PYTHON3_EXECUTABLE=$CONDA_PREFIX/bin/python \
    -D PYTHON3_PACKAGES_PATH=$CONDA_PREFIX/lib/python3.8/site-packages \
    ..

我还为我的平台安装了 OpenCL 头文件,以在使其正常工作之前克服干扰的其他错误。如果你的系统上还没有很多额外的开发者头文件,你可能需要先安装更多的头文件。这让我顺利通过了 cmake 阶段,然后通过 make 构建。

make install 之后无需符号链接。

所以也许这是 python 3.8 的一个很好的基础配方;似乎对官方 Ubuntu OpenCV build documentation 的唯一必要修改是指定指向 conda 环境目录的 cmake 参数,如上。

(使用的 OpenCV git 哈希为 69357b1)

下次我可能会尝试-j 在构建过程中实现并发,因为 OpenCV 需要大约 30 分钟才能在相当现代的 CPU 系列上构建。

【讨论】:

  • cmake 最近不推荐使用-j,而是使用msbuild /m 进行构建
猜你喜欢
  • 1970-01-01
  • 2018-05-27
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2022-01-02
  • 2019-01-04
  • 2021-06-22
相关资源
最近更新 更多