2018.01.11更新
如果只是要在python用opencv,那么下面重新编译的方法真的太蠢了,可以用pip直接安装。真不明白为什么那么多博客都是教怎么编译源码,就这么简单一句话。
$ sudo pip3 install opencv_python
参考opencv官网https://opencv.org/
下载opencv3.3源码https://opencv.org/releases.html
或者git clone https://github.com/opencv/opencv.git
升级系统已有包
sudo apt update
sudo apt upgrade
安装各种包
sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
因为用的python3,还要安装
sudo apt pytho3-dev python3-numpy
opencv源码根目录名为opencv-3.3.1
创建编译目录build
cd ~/opencv-3.3.1
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
这时会提示说要下载ippicv,结果下载失败。ippicv是并行计算库。
去github下载对应的库
https://github.com/opencv/opencv_3rdparty/branches/all
看cmake的提示下载对应版本的ippicv,我下的是ippicv/master_20170822
下载文件的地方位置在.cache/ippicv下,带md5的文件名字,需要把ippicv_2017u3_lnx_intel64_general_20170822.tgz前面加上md5
找到提示对应的文件,将文件拷贝到opencv-3.3.1同级目录
执行下面命令
ipp_file=ippicv_2017u3_lnx_intel64_general_20170822.tgz &&
ipp_hash=$(md5sum ../$ipp_file | cut -d" " -f1) &&
ipp_dir=.cache/ippicv &&
mkdir -p $ipp_dir &&
cp ../$ipp_file $ipp_dir/$ipp_hash-$ipp_file
在.cache/ippicv文件夹下有4e0352ce96473837b1d671ce87f17359-ippicv_2017u3_lnx_intel64_general_20170822.tgz文件
放好ippicv后可以重新cmake
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译和安装
make -j4
sudo make install
补充
记得装opencv3.2的时候按上面的步骤最后只编译了python2的,python3是配合virtualenv,配置python环境才能编译出来。