python - OpenCV 3.1.0 与 Python 3.5

标签 python linux opencv python-3.5 opencv3.1

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

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

最佳答案

在通过不同的教程和指南收集步骤和故障排除解决方案后,我成功地在我的系统中正确安装了 Python 3.5 和 OpenCV 库。

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

按照此处介绍的步骤,您将安装:

  • openCV 3.1.0
  • opencv_contrib 3.1.0
  • NumPy
  • 科学
  • 科学数据包
  • matplotlib
  • 赛通
  • 文夫

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

编译 OpenCV 需要 gcc-4.9+,我用 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 模块的绑定(bind)

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。

关于python - OpenCV 3.1.0 与 Python 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40051573/

相关文章:

python - 如何正确调用CreateProcessW?

尝试生成 json 时出现 Python 键错误

linux - 解释脚本行

c - 为什么多次运行同一个程序时执行时间会有所不同?

opencv - 使轮廓适合圆

python - 使用 Python 从图像中提取对象

python - 如何更改子类python中的父属性

python - 获取 'av_interleaved_write_frame(): Broken pipe' 错误

linux - 可用性集不在下拉列表中

multithreading - Qt + OpenCV 使用 std::thread 播放视频