EUAdvancer

Ubuntu 16.04桌面版使用笔记-安装opencv3.2+opencv_contrib-3.2

bg
ubuntu 安装 opencv 网上有各式各样的编译方法,比较杂乱,这里记录比较简单有效的编译设置,支持多个 opencv 版本共存(使用虚拟环境)

安装依赖

1
2
$ sudo apt-get install build-essential cmake pkg-config
$ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran python2.7-dev python3.5-dev

注意:linux 发行版通常会把类库的头文件和相关的 pkg-config 分拆成一个单独的 xxx-dev(el) 包。如果你需要安装源外(第三方)的 Python ( 类库而这个类库内还有编译的调用 Python APIC/C++ 文件时,需要安装 python-dev.下面我们会对 OpenCV 执行 cmake ,所以必须安装,否则会报错

安装numpy库

1
2
$ workon py3  # 激活虚拟环境
$ pip install numpy # 一定要装numpy

下载源码

1
2
# 也可以使用wget下载,如
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip

解压后移到 /home/zz 目录下

编译

1
2
3
4
5
6
7
8
$ workon py3
$ cd /home/zz/opencv-3.2.0
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=/home/zz/opencv_contrib-3.2.0/modules -D PYTHON_EXECUTABLE=/home/zz/.virtualenvs/py3/bin/python -D BUILD_EXAMPLES=ON ..
$ make -j4
$ sudo make install
$ sudo ldconfig
  1. cmake 时主要注意 opencv_contrib 路径 OPENCV_EXTRA_MODULES_PATH 以及执行的 python 版本 PYTHON_EXECUTABLE ,最好使用绝对路径

  2. cmake 完成后注意看,结果应该类似下图(如果仅有 Interpreter,请检查 numpy 是否已安装或其他原因)

    opencv

注意:在这里有可能会停在一些下载包无法正常下载,所有有可能出现问题的包均可以从 CoderEugene/opencv3.2_CMake 获取(下载下来将其放入正确路径即可)。接着重新 cmake (当然其实等待时间长些应该能够正常下载的)

创建链接

编译完成后,如果是以 python3 环境安装的,则 cv2.cpython-35m-x86_64-linux-gnu.so 文件在 /usr/local/lib/python3.5/site-packages/ ,而 python2cv2.cpython-27m-x86_64-linux-gnu.so/usr/local/lib/python2.7/site-packages/ 下。我们可以查看

1
2
3
$ ls /usr/local/lib/python3.5/site-packages/

cv2.cpython-35m-x86_64-linux-gnu.so

接着我们将他改名为 cv2.so(如果本来就是 cv2.so 就不需要改了),并移动到虚拟环境中

1
$ sudo mv /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so /home/zz/.virtualenvs/py3/lib/python3.5/site-packages/cv2.so

测试

1
2
3
4
5
6
$ workon py3
$ python
>>> import cv2
>>> print(cv2.__version__)

3.2.0

卸载

1
2
3
4
5
$ cd build
$ sudo make uninstall
$ cd ..
$ sudo rm -r build
$ sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

以上安装方式只要在每个虚拟环境进行相同操作即可实现多版本 opencv 共存,每次编译注意正确设置 cmake 参数