opencv2.4.9调用GPU报错

OpenCV Error:Gpu API call<invalid device symbol>in unknown function…

WIN7 + VS2010 + CUDA7.5 + CMake3.0.2

Cmake 重新编译opencv之后,显示编译成功。

代码:num_devices= cv::gpu::getCudaEnabledDeviceCount();

返回 num_devices 个数为1.

但是运行测试代码以及opencv自带的gpu sample时会报错.

OpenCV Error:Gpu API call<invalid device symbol>in unknown function…

问题分析:

这是由于编译好的CUDA不支持本机GPU的原因,本机GPU型号为GeForce GT 602,计算能力为2.1(关于gpu型号对应的计算能力,参考https://developer.nvidia.com/cuda-gpus),而Cmake编译的时候,由于"CUDA_GENERATION" = Kepler. 所以默认生成的计算能力为3.0和3.5 。所以在调用opencv的GPU函数时会出现Gpu API call<invalid devicesymbol>in unknown function….的错误。

解决方案:

将"CUDA_GENERATION"= Auto.或者"CUDA_GENERATION" = Fermi.

测试运行成功:

测试代码:

[cpp] view plaincopy
  1. #include <opencv2/opencv.hpp>
  2. #include <opencv2/gpu/gpu.hpp>
  3. using namespace cv;
  4. using namespace cv::gpu;
  5. int main()
  6. {
  7. int num_devices = cv::gpu::getCudaEnabledDeviceCount();
  8. if(num_devices <= 0)
  9. {
  10. std::cerr<<"There is no device. "<<std::endl;
  11. return -1;
  12. }
  13. std::cerr<<"getCudaEnabledDeviceCount NUM :"<<num_devices<<std::endl;
  14. cv::Mat srcImage = cv::imread("M:\\work\\Pic\\cityWu.jpg");
  15. cv::Mat dstImage;
  16. cv::gpu::GpuMat d_srcImage;//upload image to GPU
  17. cv::gpu::GpuMat d_dstImage;
  18. d_srcImage.upload(srcImage);
  19. cv::gpu::GpuMat dst;
  20. dst.create(d_srcImage.size(),CV_8UC1);
  21. cv::gpu::cvtColor(d_srcImage, d_dstImage, CV_BGR2GRAY);
  22. d_dstImage.download(dstImage);
  23. cv::imshow("RGB",srcImage);
  24. cv::imshow("gray",dstImage);
  25. cv::waitKey(0);
  26. return 0;
  27. }

运行结果:

序曲:

由于我的电脑GPU型号为NVIDIA GeForce GT 620,计算能力为2.1, (查看计算能力 网址)

首先我将"CUDA_GENERATION"= Auto,编译,生成。

但是在OpenCV.sln中生成opencv_core时,会报错,错误为:

1. CMakeError at cuda_compile_generated_bf_knnmatch.cu.obj.cmake:206 (message):

>C:\ProgramFiles (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(151,5):error MSB6006: “cmd.exe”已退出,代码为 1。

即会有一个生成失败。

为了解决这个错误,

我将"CUDA_GENERATION" = Fermi.

将CUDA_ARCH_BIN 设为2.0 2.1

将CUDA_ARCH_PTX清空,编译,生成。

然后,在OpenCV.sln中生成opencv_core,生成成功!!!

将我的错误以及改正过程贴出来,希望遇到同样情况的你,可以有所帮助!

切记:一定要注意查找好本机GPU的类型和计算能力,再生成相应的CUDA.

参考文章:

http://stackoverflow.com/questions/22823186/opencv-gpu-mat-hanging

https://developer.nvidia.com/cuda-gpus

http://blog.csdn.net/wangyaninglm/article/details/39997113

VS2010 + CUDA7.5 + GPU编译OpenCV2.4.9相关推荐

  1. 【opencv】ubuntu14.04上编译opencv2.4

    参考博客 https://blog.csdn.net/c406495762/article/details/62896035 1.安装依赖库 sudo apt-get install build-es ...

  2. [2014.3.4]天嵌TQ210在Ubuntu 11.04下编译 OpenCV2.0.0(PC)

    (一)先安装cmake (1)网上通用 apt-get install cmake 但我安装后有问题,cmake-gui出现段错误. (2)参考<CMake安装和使用> 解压cmake-2 ...

  3. MatConvNet1.0bate25+win10+vs2015+matlab2017a GPU编译踩坑

    MatConvNet1.0bate25+win10+vs2015+matlab2017a GPU编译踩坑 开头按照下边这个搞,不出意外的话直接成功.(但一般会出意外----狗头表情) matconvn ...

  4. 【流媒體】live555—VS2010/VS2013 下live555编译、使用及测试

    [流媒體]live555-VS2010 /VS2013 下live555编译.使用及测试 SkySeraph Apr 11st 2012 Email:skyseraph00@163.com 更多精彩请 ...

  5. VS2010下编译OpenCV2.4.6静态库

    1.   从 http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.3/ 下载最新的OpenCV2.4.6: 2.    ...

  6. win7 64位下自行编译OpenCV2.4.10+CUDA toolkit 5.5的整个过程以及需要注意的问题(opencv+cuda并行计算元素的使用)...

           首先说明的是,这个帖子是成功的编译了dll,但是这个dll使用的时候还是很容易出现各种问题的. 发现错误可能是由于系统安装了太多版本的opencv,环境变量的设置混乱,造成dll版本加载 ...

  7. VS2010平台下OpenCV编译和安装

    要点:            1) XP+ Visual Stuio 2010 + OpenCV-2.4.2.exe + cmake-2.8.8-win32-x86.exe             2 ...

  8. win32下安装mingw32和cmake来编译opencv2.4.9

    要注意的就是mingw32和cmake的版本了吧,我第一次编译就是以失败告终,然后痛定思痛,把自己的mingw32和cmake去卸载又安装的别人告知的,结果成功. 先是mingw32,点击打开链接,可 ...

  9. VC 2008 Express 编译OpenCV2.0/2.1

    比较好的中文OpenCV网站: http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2 ...

最新文章

  1. 后处理安装_分享UG后处理出Excel程序单的方法
  2. 操作系统:166个Linux实用命令,太全了!
  3. 盘点这些年被黑的最惨的语言
  4. 前端学习(2967):实现路由跳转的方式
  5. 睡觉时钱被转走、开房信息被叫卖、数字货币被篡改,你的安全感,还在吗?...
  6. 新浪sae部署html,利用新浪sae搭建discuz x2论坛
  7. sql中的while循环_SQL While循环:了解SQL Server中的While循环
  8. USB学习笔记连载(十五):USB固件更新以及安装驱动
  9. Python中利用numpy将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵)
  10. 关于updatepanel回传之后JS失效问题
  11. php array sum 小数位,多维数组上的PHP Array_Sum
  12. 区块链 solidity 快排
  13. php imagick 取得psd缩略图,PHP中使用Imagick操作PSD文件实例
  14. 【ArcGIS微课1000例】0033:地图点状标记符号设计教程
  15. 路由器的介绍和基本原理
  16. MTK修改sysemUI下拉的宽度为全屏
  17. 五、神奇的自然常数e之“自然”魅力
  18. 云学python (第二章用编程改造世界·小练习)《vamei-从Python开始学编程》
  19. Idea使用系统应用打开md文件
  20. Vue2.和Vue3.生命周期的区别,对比。 详解生命周期中的每个钩子函数,setup,

热门文章

  1. java刚工作搭建环境_Java开发环境的搭建
  2. 河南计算机程序大赛,我院成功举办河南省第十一届ACM大学生程序设计竞赛
  3. oracle 某天 减一天,案例一:shell脚本指定日期减去一天
  4. nmp的php.ini,Just for fun——Docker做个NMP环境
  5. 简明天线理论与设计应用_天线理论与设计笔记5--(宽带天线、口径天线)
  6. 修改时间服务器失败,电脑系统同步时间失败怎么办 修改时间服务器的方法。...
  7. arduino红外热释电传感器_压力传感器在汽车空调系统中的应用
  8. 农用地包括哪些地类_征用土地公告应当包括哪些内容?|楹庭拆迁律师
  9. 科普:Flume是啥?干嘛用的?
  10. 每日一皮:以为是王者,没想到是个青铜...