环境:ubuntu16.04 cuda8.0 cudnn5.1
本文综合参考众多同学的安装配置文章,是个人的安装过程记录,仅供参考,不足之处欢迎讨论。
1.安装
- 安装依赖项
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install python-yaml
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install python-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
$ sudo apt-get install build-essential
$ sudo apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libtiff4-dev libswscale-dev libjasper-dev
$ sudo apt-get install cmake
$ sudo apt-get install pkg-config
$ sudo apt-get install python-pip
$ sudo apt-get install python-opencv
$sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags cython ipython
$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
$ sudo apt-get install --no-install-recommends libboost-all-dev
- 安装opencv2.4.9
下载opencv-2.4.9,解压到~/目录
$ cd opencv-2.4.9
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
-D CUDA_GENERATION=Kepler ..
$ make -j4
$ make install
- 设置环境变量
添加库路径(创建opencv.conf文件)
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
输入/usr/local/lib,并保存退出
$ sudo ldconfig
添加环境变量
$ sudo gedit /etc/profile
在末尾加入:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ source /etc/profile
$ sudo ldconfig
- 查看opencv是否安装成功
$ pkg-config --cflags --libs opencv
如果没有出错,出现很多头文件等,说明安装成功。
- 查看安装的OpenCV的版本.
$ pkg-config --modversion opencv
2.遇到的问题
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):error: a storage class is not allowed in an explicit specialization
下载NCVPixelOperations.hpp替换掉opencv2.4.9内的文件,重新编译。
/data/opencv-2.4.9/modules/gpu/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
修改/data/opencv-2.4.9/modules/gpu/src/graphcuts.cpp
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
重新编译即可。
3.卸载opencv
在安装目录下执行
$ make uninstall
然后删除系统相关文件
$ cd /usr/
$ sudo find . -name "*opencv*" | xargs sudo rm -rf
上面命令是在当前目录下(包括子目录)查找带有opencv字符串的文件或文件夹并用sudo递归删
如果为了保险,可以用下面方法
$ 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*