也真够折腾的。

事件背景:为了一个光流的提取处理,本来是3.1的opencv在include一些模块上出错,原因是opencv3.0以上的版本对模块进行了再分离,要contribute,但是contribute后还是解决不了,所以,选了2.4.11(因为之前在Windows下用过,知道哪些函数能调用).

这时在make的时候出现了类似nvcc warning : 的问题,然后就按照(http://blog.csdn.net/wang4959520/article/details/51392804)或者在cmake时加上参数-D BUILD_opencv_gpu=OFF,以为能成功了,可是又有 error: ‘NppiGraphcutState’ 类似的错误,这时,找到http://blog.csdn.net/caozhantao/article/details/51479172这篇博客,按它的说法,卸载2.4.11,改用2.4.13,在cmake的时候,用了

cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_gpu=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..

这下,都圆满编译通过了,而且nonfree等头文件也能include成功了。

但是在调用gpu头文件的时候又报错说没有#include <opencv2/gpu/gpu.hpp>,好吧,只能又重新编译,又按照http://www.cnblogs.com/CarryPotMan/p/5377921.html这个博客重新对2.3.13编译一遍,还是没解决。

最后想到可能是cuda不支持,就决定卸掉2.4.12,用2.4.12,还是按这个博客,编译,还是不行,好吧,结合了http://blog.csdn.net/xuezhisdc/article/details/48691797和http://blog.csdn.net/allyli0022/article/details/62859290来,用了:

CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -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=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D CUDA_GENERATION=Fermi ..

并且将graphcuts.cpp中

将 #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

最后就解决了gpu模块调用的问题。

-----------------------------------------17年5月4号-------------------------------------------------

后来,又一次编译,为了解决:

OpenCV Error: Gpu API call (invalid device function) in call_resize_linear_glob, file /home/dog/opencv-2.4.12/modules/gpu/src/cuda/resize.cu, line 233
terminate called after throwing an instance of 'cv::Exception'
what(): /home/dog/opencv-2.4.12/modules/gpu/src/cuda/resize.cu:233: error: (-217) invalid device function in function call_resize_linear_glob

Aborted (core dumped)

根据:https://github.com/opencv/opencv/issues/6580 和 https://github.com/opencv/opencv/issues/6577 最终确定用了:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DCUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so -D CUDA_ARCH_BIN=5.2 -D CUDA_ARCH_PTX="" -D WITH_CUDA=ON -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=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_NVCUVID:BOOL="1" .

这里的5 2是这样确定的:

根据:http://www.centoscn.com/CentOS/help/2015/0307/4816.html 用命令:

# nvidia-smi

得到我的GPU是:Tesla M40

然后在:https://developer.nvidia.com/cuda-gpus  中查找,发现:

Tesla Data Center Products

GPU Compute Capability
Tesla P100 6.0
Tesla P40 6.1
Tesla P4 6.1
Tesla M60 5.2
Tesla M40 5.2
Tesla K80 3.7
Tesla K40 3.5
Tesla K20 3.5
Tesla K10 3.0

然后,就成功啦。

opencv最后还要:make -j8 和 sudo make install 不要忘了啊!

Ubuntu安装opencv 为调用gpu模块的更多相关文章

  1. Ubuntu安装opencv with cuda

    Ubuntu安装opencv with cuda 为了运行dense flow真是折腾啊,下面网址是教程 http://blog.aicry.com/ubuntu-14-04-install-open ...

  2. ubuntu 安装 OpenCv 及其Qt的开发环境配置

    ubuntu安装opencv (1)安装编译opencv的环境 sudo apt-get -y install build-essential cmake pkg-config (2)安装Image ...

  3. ubuntu安装opencv

    ubuntu版本是12.04 ,opencv的版本是2.4.9 其实官网有教程的,http://docs.opencv.org/doc/tutorials/introduction/linux_ins ...

  4. ubuntu安装opencv(自己编译)

    如果只需要python的,只需pip install opencv-python,然后apt-get一下下面第一点的东东. 1/ sudo apt-get install build-essentia ...

  5. Linux ubuntu 10.10安装OpenCv

    在windows系统下已经成功做出了一个打开摄像头并检测人脸的小程序了. 开始转战linux,因为最终目标是将程序移植到嵌入式开发板上面. 但是,问题接踵而至~ 首先linux上面要安装OpenCv, ...

  6. 【OpenCV开发】使用OpenCV的OpenCL(ocl)模块

    参加OpenCV的OpenCL模块(以下称OCL)移植工作已经有2个月了.这里我说移植而不是开发,是因为大部分OCL模块的函数都是从已经很成熟的GPU模块移植过来的.于是目前阶段OCL模块所支持的函数 ...

  7. ubuntu 14.04 下利用apt-get方式安装opencv

    转载,请注明出处:http://blog.csdn.net/tina_ttl 目录(?)[+] 标签(空格分隔): Linux学习 OpenCV ubuntu 1404 下利用apt-get方式安装O ...

  8. 在Ubuntu 18.04上安装OpenCV 4(C ++和Python)

    OpenCV于11月20日发布了OpenCV-3.4.4和OpenCV-4.0.0.这些版本中有很多错误修复和其他更改.发布重点如下: OpenCV现在是C ++ 11库,需要符合C ++ 11标准的 ...

  9. ubuntu系统编译安装OpenCV 4.4

    内容转载自我的博客 目录 前言 1. 下载源码 2. 安装各种依赖 3. 开始编译安装 4. 配置C++开发环境 5. 程序执行时加载动态库*.so 6. 测试cpp文件 7. 配置python3的o ...

随机推荐

  1. python高级 之(三) --- 高阶函数

    高阶函数 map函数 简介 """ map(func,*iterables) 参数:一个是函数.一个是序列 作用:将序列中的元素依此作用于函数,将函数运行结果返回 存放于 ...

  2. 华为HCNA乱学Round 12:NAT和easy IP

  3. WinForm笔记1:TextBox编辑时和DataGridView 单元格编辑时 的事件及其顺序

    TextBox 编辑框 When you change the focus by using the mouse or by calling the Focus method, focus event ...

  4. 单例模式(一)static、final和单例模式

    static 那天我朋友问了我个问题,static和单例模式有什么区别,所以我觉得static可以讲一下 他的问题是,把对象弄成static是不是就不变了 显然,这是还没弄清楚引用和对象的区别 其实存 ...

  5. 用IDEA开发Spring程序

    操作步骤 https://www.cnblogs.com/zyx110/p/11023218.html

  6. linux6 下设置oracle自启动(单实例)

    操作系统启动过程中,读取/etc/oratab文件,判断是否有哪些数据库是需要自动启动的(N代表不自动启动,Y代表自动启动) elan:/u01/app/oracle/product/10.2.0:Y ...

  7. CNN中feature map、卷积核、卷积核的个数、filter、channel的概念解释

    CNN中feature map.卷积核.卷积核的个数.filter.channel的概念解释 参考链接: https://blog.csdn.net/xys430381_1/article/detai ...

  8. C++学习 之 类的继承中的虚函数(笔记)

    1.多态行为 多态是面向对象语言的一种特征,让我们能够以类似的方式处理不同类型的对象.在C++中我们可以通过继承层次结构实现子类型多态. 我们可以通过下面的代码进一步了解多态: #include< ...

  9. JS中this的4种绑定规则

    this ES6中的箭头函数采用的是词法作用域. 为什么要使用this:使API设计得更简洁且易于复用. this即不指向自身,也不指向函数的词法作用域. this的指向只取决于函数的调用方式 thi ...

  10. Sleepy Game CodeForces - 936B

    大意: 给定有向图, 初始点S, 两个人轮流移动, 谁不能移动则输, 但后手睡着了, 先手可以控制后手操作, 求最后先手结果. 刚开始看错了, 还以为后手也是最优策略.... 实际上判断是否有偶数个节 ...