1.opencv安装要求(opencv官网)
GCC 4.4.x or later
CMake 2.6 or higher
Git
GTK+2.x or higher, including headers (libgtk2.0-dev)
pkg-config
Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
[optional] libtbb2 libtbb-dev
[optional] libdc1394 2.x
[optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
2.预检
#gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.02) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3. 安装cmake-2.8.12.1
# sudo wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1-Linux-i386.tar.gz
# tar xzvfcmake-2.8.11.tar.gz
# cd cmake-2.8.11
# ./configure; make; make install
4.安装依赖库
# sudo apt-get install build-essential
# sudo apt-get install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
5.安装cuda
因为需要GPU,故安装CUDA
5.1 安装NVIDIA驱动
Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,没能得到NVIDIA的认可与支持,不过确让Linux更容易的应对各种复杂的NVIDIA显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,故很多Linux发行版默认集成了Nouveau驱动,在遇到NVIDIA显卡时默认安装。企业版的Linux更是如此,几乎所有支持图形界面的企业Linux发行版都将Nouveau收入其中。
关闭Nouveau
#sudo gedit /etc/modprobe.d/blacklist.conf 在文件后面加入blacklist nouveau
#mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak(无效)
#dracut -v /boot/initramfs-$(uname -r).img $(uname -r) (sudo apt-get install dracut)
下载驱动程序NVIDIA-Linux-x86_64-367.44.run
# sudo service lightdm stop 进入命令行
# sudo ./NVIDIA-Linux-x86_64-367.44.run
报错:You appear to be running an X server; please exit X ...
# ps -e | grep X
# sudo kill Xorg
kill掉X进程
# sudo ./NVIDIA-Linux-x86_64-367.44.run
# sudo service lightdm start 返回图像界面
进入图像界面后报错:System program problem detected (未解决)
# nvidia-smi 检查驱动
5.2 安装CUDA
# sudo ./
cuda_7.5.18_linux.run --override
# sudo gedit ~/.bashrc 修改环境变量
export PATH=$PATH:/usr/local/cuda-7.5/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
#source
~/.bashrc
# sudo gedit /etc/ld.so.conf
修改动态链接
/usr/local/cuda/lib64
# sudo ldconfig
#
nvcc -V 检查CUDA
# cd /usr/local/cuda-7.5/samples
# sudo make测试CUDA
报错:unsupported GNU version! gcc versions later than 4.9 are not supported
gcc版本过高,修改CUDA配置文档,没有选择去降低gcc版本
# cd /usr/local/cuda/include/
# sudo cp host_config.h host_config.h.bak
# sudo gedit host_config.h
if _GNUC_>4 || (_GNUC_ == 4 && _GNUC_MINOR_ > 9) 将两个4改为5
# cd /usr/local/cuda-7.5/samples
# sudo make 测试CUDA,通过
5.3 安装CUDNN
下载
cudnn7.5-linux-x64-v5.1.tgz
# sudo cpinclude/cudnn.h /usr/local/cuda/include
# sudo cp lib64/libcudnn.* /usr/local/cuda/lib64
# cd /usr/local/cuda/lib 需要对cudnn进行修改
# sudo rm -rf libcudnn.so libcudnn.so.5
# sudo ln -s libcudnn.5.1.3 libcudnn.so.5
# sudo ln -s libcudnn.so libcudnn.so
6.安装opencv2.4.13
# mkdir release
# cd release
# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2
-D CUDA_GENERATION=Kepler .. (GTX780显卡,Kelper架构)
# make
报错
error:/usr/include/string.h:652:42:error: ‘memcpy’ wasnotdeclaredin this scope
原因g++版本太新了,兼容一下,在出现上面错误时,在CMakeLists.txt中前几行添加
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
# sudo make install
set runtime path of "/usr/local/opencv2/bin/opencv_visualisation" to "/usr/local/opencv2/lib:/usr/local/cuda/lib64"
...
7. 配置环境变量(保守配置)
# sudo gedit ~/.bashrc
# exportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv2/lib/pkgconfig
# exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv2/lib
# source ~/.bashrc
# sudo /etc/ld.so.conf
#添加/usr/local/opencv2/lib
# sudo ldconfig
8.opencv测试
# cd /usr/opencv-2.4.13/samples/c
# sudo ./build_all.sh
报错 coutours.c:1:39 fatal error: opencv2/imgproc/imgproc_c.h: No such file or direction
第7步已经配置了环境变量,大费周章后
# sudo cp /usr/local/lib/pkgconfig/opencv.pc /usr/lib/pkgconfig
# /usr/opencv-2.4.13/samples/c下 ./find_obj测试通过
9.opencv卸载
(未测试)
进入opencv源代码文件夹下的release(安装opencv时建立)
#make uninstall
#cd ..
#
sudo rm -r release
# 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