使用Cmake编译OpenCV以将其集成到Conda环境中

3

我正在尝试按照这里所提供的指南编译OpenCV,以便将其集成到我之前设置的Conda环境中。然而,当我在此Conda环境中导入cv2时,Python3无法找到它。

以下是我遵循的安装OpenCV的指南:

sudo apt-get update
sudo apt-get upgrade


sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python3.6-dev python3-numpy libtbb2 libtbb-dev

sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev libavfilter-dev libavresample-dev

sudo -s
cd /opt
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git


cd opencv
mkdir release
cd release


cmake -D WITH_CUDA=OFF -D BUILD_TIFF=ON -D BUILD_opencv_java=OFF -D ENABLE_AVX=ON -D WITH_OPENGL=ON -D WITH_OPENCL=ON -D WITH_IPP=ON -D WITH_TBB=ON -D WITH_EIGEN=ON -D WITH_V4L=ON -D WITH_VTK=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python2=OFF -D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D PYTHON_EXECUTABLE=~/anaconda3/envs/cvenv2/bin/python -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib/modules -D BUILD_EXAMPLES=ON /opt/opencv/

make -j8
make install
ldconfig
exit
cd ~

conda虚拟环境是~/anaconda3/envs/cvenv2。我认为需要编译,因为如果没有它,我无法使用ffmpeg。
2个回答

2
我需要将cv2.so文件链接到我的conda环境!
# navigate to the conda environment
cd ~/anaconda3/envs/<env-name>/lib/python3.6/site-packages
ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

请查看此问题:从源代码构建后无法导入cv2

我的cmake命令如下:

cmake -D WITH_CUDA=OFF \
-D BUILD_TIFF=ON \
-D BUILD_opencv_java=OFF \
-D WITH_QT=ON \
-D WITH_V4L=ON \
-D WITH_VTK=OFF \
-D BUILD_TESTS=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_opencv_python2=OFF \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=ON \
-D HAVE_opencv_python3=ON \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \
-D PYTHON_EXECUTABLE=~/anaconda3/envs/<env-name>/bin/python \
../

我激活了conda环境以进行构建。


1
问题已解决,我正在虚拟环境外安装最新版本的OpenCV。 以下是更新后的说明:
conda activate yourenvironment

sudo apt-get update
sudo apt-get upgrade


sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python3.6-dev python3-numpy libtbb2 libtbb-dev

根据Ubuntu 17.04中的OpenCV,您需要单独安装libjasper-dev软件包。

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev libavfilter-dev libavresample-dev


git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git


cd opencv
mkdir release
cd release

请确保在CMAKE命令PYTHON_EXECUTABLE=~/anaconda3/envs/yourvirtualenv/bin/python中调整您的虚拟环境名称。

cmake -D WITH_CUDA=OFF -D BUILD_TIFF=ON -D BUILD_opencv_java=OFF -D ENABLE_AVX=ON -D WITH_OPENGL=ON -D WITH_OPENCL=ON -D WITH_IPP=ON -D WITH_TBB=ON -D WITH_EIGEN=ON -D WITH_V4L=ON -D WITH_VTK=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python2=OFF -D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D PYTHON_EXECUTABLE=~/anaconda3/envs/cvenv2/bin/python -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D BUILD_EXAMPLES=ON ..

make -j8
sudo make install
sudo ldconfig

在虚拟环境中验证opencv的安装:

pkg-config --modversion opencv

大部分功劳归功于这两个网站,我从中获得了指导并找到了解决方案: site1, site2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接