【问题标题】:OpenCV 3.1.0 with Python 3.5OpenCV 3.1.0 和 Python 3.5
【发布时间】:2023-03-08 20:05:02
【问题描述】:

在遵循其他 SO 答案中推荐的几个不同教程、指南和步骤后,我没有设法在我的 Ubuntu 16.04 系统中安装 OpenCV 以与 Python 3.5 一起使用。

只要 OpenCV 3.1.0 正式支持 Python 3.x,我该如何正确安装呢?

【问题讨论】:

    标签: python linux opencv python-3.5 opencv3.1


    【解决方案1】:

    在收集了不同教程和指南的步骤和故障排除解决方案后,我设法在我的系统中适当地安装了 Python 3.5 和 OpenCV 库。

    安装是在 virtualenv 下执行的,因此无需从您的系统中清理以前的安装尝试足迹。

    按照此处介绍的步骤进行安装:

    • openCV 3.1.0
    • opencv_contrib 3.1.0
    • numpy
    • scipy
    • scikit
    • matplotlib
    • cython
    • venv

    最后,如果您之前没有安装任何这些软件包,可能会占用多达 20Gb 的空间

    你需要 gcc-4.9+ 来编译 OpenCV,我用 gcc-5.4 测试过

    安装 OpenCV 依赖项

    sudo apt-get build-dep -y opencv
    

    创建和设置虚拟环境

    sudo apt-get install python3-venv
    python3.5 -m venv python35-opencv31
    source ~/python35-opencv31/bin/activate
    pip install matplotlib
    pip install numpy
    pip install scipy
    pip install scikit-learn
    pip install cython
    pip install -U scikit-image
    

    编译 OpenCV 3.1.0 和 openvc_contrib 3.1.0

    依赖关系

    sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    

    获取存储库

    mkdir ~/git
    cd ~/git
    git clone https://github.com/opencv/opencv.git
    cd ./opencv
    git checkout 3.1.0
    
    cd ~/git
    git clone https://github.com/Itseez/opencv_contrib.git
    cd ./opencv_contrib
    git checkout 3.1.0
    

    确保可以找到一些库

    ffmpeg 库

    sudo -i
    mkdir /usr/include/ffmpeg
    cd /usr/include/ffmpeg
    ln -sf /usr/include/x86_64-linux-gnu/libavcodec/*.h ./
    ln -sf /usr/include/x86_64-linux-gnu/libavformat/*.h ./
    ln -sf /usr/include/x86_64-linux-gnu/libswscale/*.h ./
    

    如果在编译过程中尝试查找某些 ffmpeg 库时出现任何问题,请卸载 ffmpeg 和 build it from source

    python 与 opencv_contrib 模块的绑定

    echo "\nfind_package(HDF5)\ninclude_directories(\${HDF5_INCLUDE_DIRS})" >> ~/git/opencv/modules/python/common.cmake
    

    编译

    source ~/python35-opencv31/bin/activate
    mkdir ~/opencv3.1.0
    cd ~/git/opencv/
    mkdir release
    cd ./release
    export CC=$(which gcc)
    export CXX=$(which g++)
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=~/opencv3.1.0 \
        -D INSTALL_C_EXAMPLES=OFF \
        -D INSTALL_PYTHON_EXAMPLES=ON \
        -D OPENCV_EXTRA_MODULES_PATH=~/git/opencv_contrib/modules \
        -D BUILD_EXAMPLES=ON \
        -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
    

    输出应包括以下内容:

    --   Python 2:
    --     Interpreter:                 /home/rodrigo/anaconda/bin/python2.7 (ver 2.7.12)
    --     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)
    --     numpy:                       /home/rodrigo/anaconda/lib/python2.7/site-packages/numpy/core/include (ver 1.10.4)
    --     packages path:               lib/python2.7/site-packages
    -- 
    --   Python 3:
    --     Interpreter:                 /home/rodrigo/python35-opencv/bin/python3 (ver 3.5.2)
    --     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)
    --     numpy:                       /home/rodrigo/python35-opencv/lib/python3.5/site-packages/numpy/core/include (ver 1.11.2)
    --     packages path:               lib/python3.5/site-packages
    -- 
    --   Python (for build):            /home/rodrigo/anaconda/bin/python2.7
    

    现在:

    make
    

    如果成功,那么:

    make install
    

    将 OpenCV 库添加到您的 virtualenv

    cd ~/python35-opencv31/lib/site-packages
    ln -s ~/opencv3.1.0/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so
    

    完成!

    测试它是否按预期工作:

    cd ~
    source ~/python35-opencv31/bin/activate
    python
    import cv2
    cv2.__version__
    

    它应该导入 cv2 并显示版本号 3.1.0。

    【讨论】:

    • 我在安装 OpenCV 时发现所有可能的 CFLAGS 有点麻烦。我肯定会推荐cmake-gui 之类的东西来寻求帮助。 sudo apt-get install cmake-qt-gui
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2016-11-02
    • 2016-09-30
    • 2017-02-07
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多