第一步:更新驱动

ubuntu 16.04的更新管理器集成了驱动更新,选择安装nivdia的驱动

第二步:安装cuda

sudo apt-get install nvidia-cuda-toolkit
cuda是7.5.18版,安装完后重启,在终端输入nivdia-smi,有结果则驱动和cuda安装成功。
但是cuda只支持gcc5.0以下,即使后续用cmake编译opencv成功,gpu还是无法调用

第三步:强制取消cuda的gcc版本检查
注释掉host_config.h中关于gcc版本的检查,版本大于5则返回错误

//#if __GNUC__ > 5
//#error -- unsupported GNU version! gcc versions later than 5 are not supported!
//#endif /* __GNUC__ > 5 */

通过nvidia-cuda-toolkit安装的,host_config.h在 /usr/include/下,如果通过cuda的run文件安装,也会因为gcc版本检查提示错误,也要修改对应位置的host_config.h

法二:通过修改gcc版本降级

第四部:安装opencv相关的库

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev libtbb-dev libboost-dev libeigen3-devsudo apt-get install libxml2-dev libxslt-dev libffi-dev libsdl1.2-dev libssl-dev libboost-all-dev

第五步:cmake编译
安装cmake-gui
相关选项:

  1. 添加opencv-contrib模块
  2. CUDA_GENERATION模式设定为auto,不是kepler。 我的显卡 Compute Capability是5.0,kepler默认3.0(3.5),导致编译之后的opencv调用cuda,出现api不符合,因为CUDA_ARCH_BIN与电脑显卡不一致,具体请查看,确认CUDA_ARCH_BIN与你显卡的Compute Capability一致,如果不一致,CUDA_GENERATION请选择auto或者空白,然后填入显卡对应的Compute Capability
  3. 添加tbb,ipp最好提前下载,解压放/opencv-3.1.0/3rdparty/ippicv/中,
  4. 勾选CUBLAS,Eigen,ipp,opengl,注意编译之前确保numpy已经安装,否则最后不会生成cv2.so
  5. 强烈建议:如果准备opencv2.4.和opencv3.1切换使用,(毕竟opencv3.1实现了很多新论文相关算法,opencv2.4也比较常见),请进行如下设置:
修改cmake_install_prefix,
opencv3.1 安装目录/usr/local/opencv3,
opencv2.4 安装目录/usr/local/opencv2,
在cmake-gui中可以搜索cmake_install_prefix,修改。
注意如果准备切换opencv版本,一定不要选择默认路径,否则,链接opencv的时候会因为多版本的lib发生链接冲突。
  1. configure以及generate,生成的build下面

    make -j4  //多线程编译
    sudo make install 

    第六步:跳过系统环境变量的设置,设置/etc/profile和~/.bashrc导致同时使用不同版本时发生错误,所以跳过;
    配置终端的环境变量,不同的终端设置不同的opencv
    步骤:
    打开终端,需要运行opencv3的,注意/usr/local/opencv3为opencv3.1的安装目录

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv3/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv3/lib

相应的,需要运行opencv2的,注意/usr/local/opencv2为opencv2.4*的安装目录

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv2/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv2/lib

pkgcongfig中的有opencv.pc保存有对应opencv的include和lib路径,但是sudo ldconfig后生效,
可以用下列三个命令验证

pkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs opencv 

优点:
可以不同版本的opencv同时编译;
缺点:
每个终端下运行opencv 都要设置对应的环境变量,新建终端默认没有opencv的环境变量需要从重新设置。

第七步:CMakeLists的一点点修改
因为usr/local/opencv3/share/OpenCV/OpenCVConfig.cmake中设置了opencv的配置,自定义路径安装opencv时,找不到这个文件OpenCVConfig.cmake,opencv-config.cmake
需要在项目的CMakeList.txt中添加OpenCVConfig.cmake的路径

set(CMAKE_PREFIX_PATH "/usr/local/opencv3/share/OpenCV")

根据自定义的opencv路径修改。

error:1 /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope

原因g++版本太新了,兼容一下,在出现上面错误时,在CMakeLists.txt中前面几行添加

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

ubuntu 16.04 编译opencv3.1,opencv多版本切换相关推荐

  1. ubuntu 16.04 编译android 7.1,jack报错

    ubuntu 16.04 编译android 7.1,jack报错 Writing client settings in /home/nikos/.jack-settings Installing j ...

  2. android s905 编译_NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码

    NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码 1. 下载源码 在这里下载https://www.mediafire.com/folde ...

  3. Ubuntu 16.04下安装Caffe(GPU版本 GTX970)

    Ubuntu 16.04下安装Caffe(GPU版本 GTX970) 个人分类: Deep Learning 2018年8月6日更新说明:距上次安装成功没多久,显卡驱动莫名失效,没有解决,索性重装了系 ...

  4. cmake linux编译,Ubuntu 16.04编译cmake源码

    编译版本:cmake-3.8.0-rc2 为了能够在Ubuntu 16.04中编译出ccmake和cmake-gui,首先需要安装libncurses5-dev sudo apt install li ...

  5. ubuntu 16.04 编译构建QEMU依赖的软件

    在原生ubuntu 16.04下编译构建QEMU过程中,会遇到若干错误.出现这些错误的原因是系统缺少一些软件.根据过去的经验,缺少的软件包列表如下: python, pkg-config, bison ...

  6. Ubuntu 16.04编译Android 7.1.2

    折腾了很久,终于搞定了这个环境.记录一下. 准备工作: 1. 首先在Ubuntu官网上下载Ubuntu16.04的官方镜像.官网下载地址(这个找了很久,这里可以直接下载ISO镜像):https://l ...

  7. 16.04编译android 7.0,[原创]使用ubuntu 16.04编译android-6.0.0_r1

    前言 最近一直在折腾这个android源码从Mac到docker再到ubuntu14.04,最后换了ubuntu 16.04,前前后后花了大概2个星期,感觉自己就是自带bug的男人...呵呵了,记录一 ...

  8. ubuntu 16.04 编译 opencv_contrib 3.4, nonfree

    由于专利原因,3.0以后,opencv中的某些功能做了默认的剔除,如果需要安装需要自己单独编译. Part I 3.0 以下版本 对于低版本的比如2.4.x, ubuntu 下可以直接安装,方法如下: ...

  9. Ubuntu 16.04编译安装OpenCV(Python)

    为什么80%的码农都做不了架构师?>>>    http://blog.topspeedsnail.com/archives/4755 http://www.pyimagesearc ...

  10. ubuntu 16.04 编译android,Ubuntu 16.04 64bit 编译 Android 4.4 源码

    1.获取Android源码 (1)下载repo 在用户目录下创建一个bin文件夹来存放repo,并把该路径设置到环境变量中mkdir ~/binPATH=~/bin:$PATH 下载repo脚本cur ...

最新文章

  1. linux下新文件权限设置之umask的理解
  2. 28 多进程之数据交换Pipe
  3. 帮Facebook把用户做到7亿的那个人,告诉你如何实现用户增长
  4. 分割数组的最大值—leetcode410
  5. idea ssm框架 mysql_IDEA 2017 整合SSM框架(使用Maven创建工程)
  6. ajax中json响应
  7. php.ini添加的变量读取,PHP5 在扩展里使用 INI 指令(直接添加和配合全局变量两种方式)...
  8. 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid...
  9. fastboot 刷入第三方 Recovery——Android 安装 Xposed 框架那点事
  10. 逻辑为基、数企赋能(NO.9)—企业运营体系顶层逻辑之困
  11. 泰坦尼克号的数据集的下载 tensflow
  12. 轻松解决ArcGIS Pro 安装中文汉化包或离线帮助文档时报错“指定路径为空”
  13. 矩阵快速幂(推导+模板+例题详解)
  14. WEB前端技能考核内容及岗位要求
  15. kdj指标计算程序代码
  16. 那些年 用过的经典App
  17. 鸟哥的linux私房菜_linux磁盘与文件系统管理
  18. Android——单元测试
  19. 学习一下windows系统的的目录结构,对比一下Linux系统的目录结构
  20. tplink无线桥接WDS小结

热门文章

  1. 台式计算机如何联络无线网,台式电脑怎么无线上网
  2. 3dmax:3dmax三维建模中常用的渲染设置【明暗器基本参数】、Standard的材质、光线跟踪、合成、混合、建筑、无光/投影、混合实例 、多维子对象之详细攻略
  3. 怎么用计算机进行进制间的换算,如何实现16进制与其他进制之间的转换,教你使用16进制计算器...
  4. html实现分级目录线,jQuery 实现支持分级标题标签的文章目录
  5. 2017年节假日放假安排来了!
  6. ps如何制作霓虹字体
  7. 什么是遥远的相似性?
  8. QML Label/Text 文本居中显示
  9. 时钟系统安装配置注意事项
  10. IDEA SVN拉下来的项目import project 没反应 解决方案