2

闯关记简介

由于近期项目需要完成一个图像分析的任务,而以前也对OpenCV有所耳闻,但没有技术和产品上的需求,所以虽然想找时间玩玩,但苦于时间的紧张,一直没有真正去touch,这次打算正好利用这次机会做深入一点的研究。

实验环境

  • Ubuntu 16.04 64 Bits

  • Python2.7

  • OpenCV 3.1.0

那么,我们就愉快的开始这段奇幻之旅吧!

安装OpenCV的依赖

  • 更新 apt-get

sudo apt-get update
sudo apt-get upgrade
  • 更新一些必要的第三方开发者工具

sudo apt-get install build-essential cmake pkg-config
  • 做图像处理,图像I/O相关的库必不可少

sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
  • 当然也需要一些视频相关的库

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
  • 在带X-Window的系统中OpenCV用到的 highgui 所需的依赖

sudo apt-get install libgtk-3-dev
  • OpenCV矩阵计算算法优化所用到的库

sudo apt-get install libatlas-base-dev gfortran
  • Python语言绑定所需要的开发包

sudo apt-get install python2.7-dev python3.5-dev

下载OpenCV源码包

  • OpenCV 3.1.0

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
  • OpenCV 3.1.0 Contribution版也会用到

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip

建立Python虚拟环境,以隔离对其他环境的影响

  • 获取 pip 模块

cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
  • 安装 virtualenv

sudo pip install virtualenv
sudo rm -rf ~/get-pip.py ~/.cache/pip
  • 创建Python虚拟环境

mkdir ~/.virtualenvs
cd ~/.virtualenvs
virtualenv cv -p python2

安装 numpy 模块

这里比较坑,因为国内网络原因,下载了很多遍都下不下来,考虑过以下几种方法解决,只有最后一种方法对我来说work:

  • 使用国外VPN,我使用的是日本和韩国的VPN,速度会快一些,但是几次都是在最后一点快成功的时候失败了……

  • 使用douban的源,没办法,直接报错……

  • 不直接使用“pip install”,而是先wget下whl包,然后在“pip install”这个whl包

source ~/.virtualenvs/cv/bin/python
wget https://pypi.python.org/packages/5e/d5/3433e015f3e4a1f309dbb110e8557947f68887fe9b8438d50a4b7790a954/numpy-1.11.2-cp27-cp27mu-manylinux1_x86_64.whl#md5=fa62a11922a9e0776963508fb5254d3d
pip install numpy-1.11.2-cp27-cp27mu-manylinux1_x86_64.whl

编译OpenCV库

  • 好啦,前面的准备工作都做好了,接下来要开始编译OpenCV库!

cd ~/opencv-3.1.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=~/opencv_contrib-3.1.0/modules \
    -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
    -D BUILD_EXAMPLES=ON ..
  • 毕竟在前面已经耗费了很多精力,到这里应该很快就能结束战斗了,但是……还是太天真了!在下载“ippicv_linux_20151201.tgz”包的时候,有卡住了,这个30+M的包就是下不下来……果断找资料,原来可以先手动下载这个包,然后在重新开始编译,这样就可以顺序进行下去了。

cp ippicv_linux_20151201.tgz ~/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz
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=~/opencv_contrib-3.1.0/modules \
    -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
    -D BUILD_EXAMPLES=ON ..
make -j2    # 2 stand for the cpu number
sudo make install
sudo ldconfig
  • 编译结束,检查编译是否成功

ls -l /usr/local/lib/python2.7/site-packages/ | grep cv2.so

完成OpenCV Python语言绑定

  • 创建软连接到虚拟环境

cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
  • 测试Python的OpenCV模块

python
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
  • Now everything done, get ready to roll!

Refer

注:本文属原创,码字辛苦,未经同意,请勿转载,最后感谢阅读!——小杰控


小杰控
1.9k 声望41 粉丝

扫地的时候,你的屏幕我一瞥而过,发现了3个error和5个warning