ubuntu+OpenCV3.3.0+CUDA配置详情

参考链接:https://www.linuxidc.com/Linux/2016-12/138870.htm

#NVIDIA驱动下载
1.更新源

  • sudo apt-get update
  • sudo apt-get upgrade

2.安装依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

3.官网下载对应驱动
http://www.nvidia.com/Download/index.aspx?lang=en-us

4.安装驱动准备
终端输入

  • sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行加上 blacklist nouveau . 这里是将Ubuntu自带的显卡驱动加入黑名单。

ubuntu+OpenCV3.3.0+CUDA配置详情_第1张图片

在终端输入

  • sudo update-initramfs -u

重启电脑

5.安装驱动

	(切换到文字界面(Ctrl+Alt+F1~F6))
	(切换到图形界面(Ctrl+Alt+F7))

启动电脑后,首先设置密码,因为登录文字界面需要密码

  • sudo passwd

进入文字界面(Ctrl+Alt+F1~F6),输入命令

  • sudo service lightdm stop # 关闭图形界面

进入驱动文件所在目录,输入命令(NVIDIA… .run代替驱动名称)

  • sudo chmod 777 NVIDIA… .run # 添加执行权限
  • sudo ./NVIDIA… .run -no-x-check -no-nouveau-check -no-opengl-files

网上有的教程是sudo ./NVIDIA… .run,只输入这个命令,驱动安装成功后或会在登录界面无限重启,这个坑也困扰了我好大一会。

完成后,重启电脑,输入指令验证

  • nvidia-smi

若显示GPU信息,则安装成功,如图
ubuntu+OpenCV3.3.0+CUDA配置详情_第2张图片

#CUDA安装
1.官网下载驱动
https://developer.nvidia.com/cuda-downloads
官网现在最新驱动是CUDA9.1,我以前也下载的是9.1版本的,但是在编译OpenCV的时候,会出现各种错误,只好作罢。然后又找的8.0版本的,才编译成功。

建议在网上找CUDA8.0的资源。

2.进入CUDA8.0目录,输入命令(cuda_8.0…run代替CUDA软件)

  • sudo chmod 777 cuda_8.0…run
  • sudo ./cuda_8.0…run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

3.环境变量配置
打开~/.bashrc文件:

  • sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

ubuntu+OpenCV3.3.0+CUDA配置详情_第3张图片
4.测试CUDA的samples

  • cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
  • sudo make
  • sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功,如图
ubuntu+OpenCV3.3.0+CUDA配置详情_第4张图片

5.cudnn
下载cuDNN5.1之后进行解压:

sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz 

进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:

cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include  #复制头文件

再将进入lib64目录下的动态文件进行复制和链接:

cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5  #生成软衔接(注意与自己的版本)
sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

#OpenCV3.3.0安装
1.OpenCV依赖库的安装

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
sudo apt-get install libavformat-dev libjpeg.dev libtiff4.dev
sudo apt-get install libswscale-dev libjasper-dev
sudo apt-get install libjpeg62-dev
sudo apt-get install v4l2ucp
sudo apt-get install v4l-utils
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

注意,可以将上述多条命令写到脚本文件中,方便执行,免得输入这么多条命令。

2.进入opencv-3.3.0目录,创建build文件夹

  • mkdir build
  • cd build

输入命令(带contrib+带CUDA)

cmake -D CMAKE_BUILD_TYPE=Release \
		-D CMAKE_INSTALL_PREFIX=/usr/local 
		-D OPENCV_EXTRA_MODULES_PATH=~/sources/opencv_contrib-3.3.0/modules \ //目录写成绝对路径
		-D WITH_CUDA=ON -D ENABLE_FAST_MATH=1 \
		-D CUDA_FAST_MATH=1 \
		-D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
		-D WITH_CUBLAS=1 ..

成功后如图所示:

ubuntu+OpenCV3.3.0+CUDA配置详情_第5张图片

往上翻,即可看到GPU的相关选项:
ubuntu+OpenCV3.3.0+CUDA配置详情_第6张图片

3.安装

make -j4         # -j4 四核编译,加速,编译大概96分钟(19.14 -> 20.50)
sudo make install   (注意一定要加sudo)
pkg-config --modversion opencv   # 查看OpenCV版本

4.路径配置

  • sudo gedit /etc/ld.so.conf.d/opencv.conf

在出现的空文件中添加**/usr/local/lib**
然后

  • sudo ldconfig # 使配置生效

至此,安装成功
注意
驱动安装成功后,重启Linux,会发现开机黑屏,有一个光标一直在闪,这是grub引导错误,解决方案非常简单,在windows10下,用Easy BCD,删除原来的linux引导,重新添加linux引导就解决了。

#测试
可用以下CPP进行验证

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 


using namespace cv;
using namespace std;


int main()
{

	int num_devices = cv::cuda::getCudaEnabledDeviceCount();
	cout << num_devices << endl;

	cv::cuda::printShortCudaDeviceInfo(cv::cuda::getDevice());
	
	
	return 0;
}

若getCudaEnabledDeviceCount()返回值为1,证明OpenCV+CUAAD安装成功
ubuntu+OpenCV3.3.0+CUDA配置详情_第7张图片

带GPU加速的OpenCV还是非常快的
ubuntu+OpenCV3.3.0+CUDA配置详情_第8张图片

你可能感兴趣的:(Linux,OpenCV,CUDA,ubuntu,opencv)