双系统win10+ubuntu16.04的安装就不赘述了,直接从安装好ubuntu之后开始
由于是双显卡,而ubuntu默认自带的n卡驱动是第三方,安装cuda之后会产生一系列问题,包括但并不仅限于 开机黑屏,循环登录,桌面只有壁纸和鼠标了解一下。所以必须卸了第三方,安装官方驱动
sudo add-apt-repository ppa:nilarimogard/webupd8 #添加PPA更新源
sudo apt-get update #刷新更新源列表
sudo apt-get install prime-indicator #安装双显卡切换指示器
sudo service lightdm stop #关闭图形系统
sudo apt-get install nvidia-375 #通过官方源安装驱动,这里的375需要按照你的系统推荐的版本号修改
sudo service lightdm start #启动图形系统
并改动/etc/default/grub,具体怎么改动 参照之前的一篇blog点击打开链接
解决了显卡驱动的问题,就开始正题了
先装cuda,最新版 9.2点击打开链接 找到对应的版本,下载deb文件,按照上面的指令,几步就装好了。另外有patch,因为看到上面写着墙裂推荐安装,也下载下来装上,ubuntu安装deb文件,就用 sudo dpkg -i xxxxx.deb
然后开始装opencv和ffmpeg的依赖包
安装官方必装包
sudo apt-get install build-essential cmake 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
安装OpenGL依赖包
sudo apt-get install freeglut3-dev mesa-common-dev libgtkglext1 libgtkglext1-dev
安装视频处理包
sudo apt-get install checkinstall yasm libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libgtk2.0-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils
然后源码安装ffmpeg
要想编译生成的ffmpeg有ffplay,还需要安装一个sdl, sudo apt-get install libsdl2-dev,貌似是这样
从点击打开链接下载的源码后
tar -xjf ffmpeg-3.2.4.tar.bz2
cd ffmpeg-3.2.4
mkdir YOUR_PATH/ffmpeg
./configure --enable-shared --prefix=/YOUR_PATH/ffmpeg
make -j16
make install
在./configure那句之后,看打印的结果,是不是自己需要的东东都有,比如我们nvidia gpu加速支持的编码器nvenc等等。如有发现缺少什么,自己百度。
ffmpeg安装好之后,在.bashrc中配置环境变量
export PATH="/YOUR_PATH/ffmpeg/bin:/YOUR_PATH/ffmpeg/include:$PATH"
export PKG_CONFIG_PATH="/YOUR_PATH/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH"
这样可以让系统和pkg-config找到它
输入ffmpeg测试一下,应该会有问题,说找不到依赖的动态库,这时需要
sudo vim /etc/ld.so.conf.d/ffmpeg.conf
写入安装的ffmpeg的lib所在路径 /your_path/ffmpeg/lib
保存退出后 ldconfig ,搞定,再输入ffmpeg 试试,没问题了吧
然后是opencv的安装,从github上下载,3.4.0
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 3.4.0
用cmake-gui配置编译选项,根据自己的需求,基本上要有这些
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUFFT=ON \
-D WITH_QT=ON \
-D WITH_NVCUVID=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_OPENGL=ON \
-D WITH_FFMPEG=ON \
-D INSTALL_C_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_TIFF=ON
没有安装QT的可以把QT选项去掉,然后configure,看打印出来的信息中重点检查Video IO,CUDA,CUBALS的状态都是YES
然后make -j 16
这是一个比较漫长的过程,在make的过程中如果报错
nvcc fatal : Unsupported gpu architecture 'compute_20'
是因为CUDA 9.0以上不支持这种compute_20的架构,要在源码文件夹中的OpenCVConfig.cmake中查找“compute_20”
-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 .....
把前两行删掉,保存退出,重新配置选项configure,make,就不会报错了
漫长的make过程之后
sudo make install
后面python的配置暂时不写了,先这样