您的位置:首页 > 运维架构

[置顶] GTX1070+ubuntu14.04+cuda8.0+opencv3.0.0编译教程

2017-12-12 13:40 531 查看
一、前言

    最近在ubuntu上编译opencv的时候遇到了各种问题,参考了许多的博客也没有能够一步完全顺利编译成功的。经过几天的不断尝试和摸索,总算是能够一次性顺利完成所有的配置。为了避免需要在ubuntu上编译的小伙伴走不必要的弯路,特整理此安装教程,希望对有这方面需求的人能够提供些微帮助。由于显卡和OpenCV版本的原因,该教程可能并不能完整的兼容,在编译过程中需要根据自身硬件和软件的版本对配置文件做相应的调整。对于出现的问题,欢迎通过留言、私信或是邮箱相互讨论。在此也衷心感谢乐于分享的各位大佬。

    个人邮箱:1270978696@qq.com

二、Cuda安装

cuda版本:cuda_8.0.61_375.26_linux.run和修复文件cuda_8.0.61.2_linux.run。

上述文件可以前往NVIDIA官方网址下载,也可以从所给出的百度网盘链接下载。  

cuda_8.0.61_375.26_linux.run链接:https://pan.baidu.com/s/1jI7YAXK 密码:ut09

cuda_8.0.61.2_linux.run链接:https://pan.baidu.com/s/1o8Booum 密码:bgyg
1、查看gcc的版本
$ gcc –version2、禁用nouveau
虽然网上也有博主采用不禁用的方式安装驱动后再安装cuda,但后来出现了许多问题。参照NVIDIA给出的文档,还是建议通过禁用方式安装。

2.1 查看驱动信息

$ lsmod | grep nouveau如果有输出内容,则需要进行禁用操作
2.2 显卡禁用

$ sudo gedit /etc/modprobe.d/blacklist.conf注意:如果/etc/modprobe.d/路径下存在blacklist-nouveau.conf文件,则修改此文件。
打开文件后在最后添加以下内容:

blacklist nouveau
options nouveau modeset=0保存后退出
3、备份当前驱动
$ mv /lib/modules/4.4.0-31-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko /lib/modules/4.4.0-31-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko.org4、重新加载
$ update-initramfs -u5、重启
$ sudo reboot6、开机检查禁用情况

重启后进入到登录界面时不要使用密码登录,按住ctrl+shift+f1进入到命令界面,然后按照提示输入用户名和密码。检查是否禁用成功:

$ lsmod | grep nouveau
如果没有任何输入,则表示禁用成功

7、关闭图形化界面
$ sudo service lightdm stop8、安装Cuda
切换到cuda所在的路径,比如我放在/home/x/Downlods路径下,(注:x表示我的用户名)

$ cd ~/Downloads 8.1 修改文件权限
$ sudo chmod +x cuda*8.2 安装cuda_8.0.61_375.26_linux.run
$ ./ cuda_8.0.61_375.26_linux.run

出现阅读提示,直线按q键跳过,然后选择accept。

安装过程中除了安装OpenGL以外,其他的都选择默认值,没有默认值提示的都选择yes。安装成功后会给出提示,当然失败了也会报出相应的错误。

注意:如果你只有一个显卡,则一定不要安装OpenGL,否则后期在使用的时候更新之后会出现开机登录死循环的情况;如果你有多个显卡,一定不能将OpenGL安装到用于显示器显示的那个显卡,否则也会出现上述情况。

8.3 安装cuda_8.0.61.2_linux.run

$ ./ cuda_8.0.61.2_linux.run
出现阅读提示,直线按q键跳过,然后选择accept。

安装过程中除了安装OpenGL以外,其他的都选择默认值,没有默认值提示的都选择yes。安装成功后会给出提示,当然失败了也会报出相应的错误。

注意:该文件是用于修复前一个文件的一些bug,建议安装。
9、重启图形化界面
$ sudo service lightdm restart10、登录检查

检查路径/dev下有无存在名为nvidia*(以nvidia开头)的多个文件(device files)

如果没有的话,可以参考官方文档里的指导步骤,进行添加。

11、设置环境变量
$ cd ~
$ sudo gedit ./.bashrc
打开文件后在最后添加:

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
12、检查驱动是否安装

关闭11步的终端,并重新打开终端(如果在11步的终端下输入nvcc –V时看不到输入的,因为配置没有被更新,所有必须关闭后重新打开),输入:

$ nvcc –V
安装成功后会提示CUDA版本信息

13、编译测试文件
默认路径在~/NVIDIA_CUDA-8.0_Samples。在编译前需要检查是否安装了g++,否则无法编译。

安装g++大方法

$ sudo apt-get install g++
如果没有安装,则会提示安装;已安装的话就会很快结束

安装好上述编译文件后,进入到~/NVIDIA_CUDA-8.0_Samples下,执行:

$  cd ~/NVIDIA_CUDA-8.0_Samples
$  make

如果需要多线程编译,如采用8线程编译,则输入:make–j8

14、测试

编译成功后,进入到1_Utilities

$  cd 1_Utilities

执行:


$  ./deviceQuery/ deviceQuery

如果安装成功,则会输出(...表示省略):


………………
………………
………………
Result = PASS

参考https://www.cnblogs.com/lvchaoshun/p/6411697.html

三、安装OpenCV的依赖文件

1、安装依赖库
$  sudo apt-get update
$  sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils
2、安装依赖库ffmpeg
$ sudo add-apt-repository ppa:mc3man/trusty-media
根据提示按下回车键,然后更新安装目录,第二步会持续一段时间,因为需要下载非常多的安装包

$  sudo apt-get update
$  sudo apt-get dist-upgrade
然后安装FFmpeg和frei0r-plugins:
$ sudo apt-get install ffmpeg
$ sudo apt-get install frei0r-plugins四、编译OpenCV
1、下载OpenCV源代码

资源可以去官网下载或是github,下面只给出百度云链接,包括两部分:
openCV3.0.0链接:https://pan.baidu.com/s/1eSeu0Pc密码:xyba
ippicv_linux_20141027.tgz链接:https://pan.baidu.com/s/1eRWTcEe密码:0xy0
下载完之后将OpenCV解压到Home路径下:
$  unzip opencv3.0.0.zip /home/你的用户名

当然也可以选择拷贝到Home路径下直接解压
2、编译OpenCV

进入解压的opencv3.0.0目录中,并创建release文件夹:
$  mkdir release

进入到release文件夹执行编译:
$  cd release
$  cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=OFF -D WITH_OPENGL=OFF -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D BUILD_TIFF=ON ..

如果你安装有OpenGL和QT,则将对应位置后面的OFF改成ON。
此处的配置应该根据自己的情况进行相应的调整,如果必要依赖库没有安装成功的话,很可能导致后续编译失败。

等待编译完成,中间会自动下载ippicv_linux_20141027.tgzwen文件,因此需要等待一段时间。
配置完成后,用从百度云下载的ippicv_linux_20141027.tgz文件替换掉~/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b/下的ippicv_linux_20141027.tgz,替换后解压,删除掉~/opencv-3.0.0/3rdparty/ippicv/unpack/下的ippicv_lnx文件,并将刚才解压的文件移到此路径下。
进入~/opencv-3.0.0/modules/cudalegacy/src/,使用gedit(也可以是其他编辑器)打开graphcuts.cpp,然后进行以下替换:

#include “precomp.hpp”
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

替换为:
#include “precomp.hpp”
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
注意:这一步操作跟Cuda版本有关,并不是所有的编译都需要。

然后执行编译(同理,-j8表示8个线程,用于增快编译速度,当然也可以直接输入make):
$ make –j8编译的过程需要持续一段时间,可以去泡个茶或啥的。
经过漫长的编译之后,如果没有显示任何错误(其实出现错误就会终止)就可以执行下面的安装了。

$ sudo make install3、环境配置
$  echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf.d/opencv.conf
$  sudo ldconfig
$  cd ~
$  sudo gedit ./.bashrc

然后在最后添加(同cuda的环境配置一样):

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig\nexport PKG_CONFIG_PATH如果需要在python中调用Python模块cv2,需要继续执行下面的操作
4、安装python-opencv
$ cd ~
$ sudo apt-get install python-opencv5、安装ipython
$ sudo apt-get install ipython6、测试
$ cd ~
$ ipython
在ipython交互式界面导入cv2
>>  import cv2
如果没有报错,则表示配置成功。如果出现错误,请自行询问度娘。

参考:1、opencv安装:http://blog.csdn.net/abc869788668/article/details/73913539
      2、FFmpeg安装:https://www.faqforge.com/linux/how-to-install-ffmpeg-on-ubuntu-14-04/
五、总结
    以上为我在编译opencv过程中的详细步骤,如果不清楚的地方可以留言或私信,我会在第一时间回复。编译过程中难免出现错误,请首要参考官方文档,然后参考网上博客。
    最后,祝愿大家能够一次性编译成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: