Win10+OpenCV2.4.13+VS2013+CUDA7.5配置教程

2023-10-29

首先说明一下,OpenCV2.3.13之前的版本不支持CUDA7.5,因此配置总是会出问题,在OpenCV官网下载OpenCV2.4.13版本,此版本支持CUDA7.5。

另外OpenCV2.4.13是支持VS2013的,但不清楚支不支持VS2015及以上,OpenCV官网上还有OpenCV2.4.13.2版本支持VS2015,我并没有测试,慎用。

下面开始教程:

 

1.    下载TBB,解压。

解压完成之后在【我的电脑】-【属性】-【高级系统设施】-【高级】-【环境变量】-用户变量-Path】中添加两个路径:

      %TBB路径%\bin\intel64\vc12(选择vc12还是vc14要看你装的VS版本,VS2013对应vc12)

      %TBB路径%\include

之后在【我的电脑】-【属性】-【高级系统设施】-【高级】-【环境变量】-【系统变量】-Path】中添加一个路径:%TBB路径%\bin\intel64\vc12

 

2.    下载CUDA7.5并安装,安装完成后,理论上应该自动设置好了环境变量,可以自己去查看

3.    下载CMake3.8.1并安装,最新版本的CMake有问题,OpenCV2.4.13不兼容,安装时注意勾选一个类似叫add to system path 的选项。

4.    打开CMake这样选择

点击【Configure】之后会进入版本选择界面:

                       

 

第一个框选择对应的VS版本,注意选Win64版本,然后finish,等。

然后是这个界面

 

在WITH里勾上WITH_CUBLAS、WITH_OPENGL 、WITH_TBB.

在CUDA里这样选,勾上CUDA_FAST_MATH。

(这里可能对于高级显卡配置时要做相应更改,如果要改就把第二个红框里选上架构,具体架构要在NVIDA官网查,还要查Compute Capability并将其填到第一个红框里,我在官网查的自己GPU运算能力有5.0,按照网上的做法在第一个框内填写为3.0 3.5 5.0,第二个红框选的Kepler,能成功配置出来但不能跑代码(提示Invalid device symbol错误);若第二个框选的Fermi,第一个框内填写为2.0 2.1(2.0),跑代码也会出错。所以最后自己选择不做更改,让CMake自己决定,编译出来是成功跑出代码了的。)

再次点击configure,出现如下界面

 

再次Configure,完成后再点Generate,完成后再点open project。

5.    等待加载完成,打开VS的视图-其他窗口-属性管理器(Properties Manager),

展开ALL_BUILD,双击Microsoft.Cpp.x64.user,

                                                                     

通用属性-VC++中,将可执行目录、包含目录、库目录里的自己添加的路径都删除,保留默认路径,像这样

                       

 

然后选择Debug模式,x64,默认是Win32,可以在那个框中下拉有一个配置管理器里设置,不会的自己百度:)

 

然后右键CMake Target下的INSTALL,选择第一项,生成。大约一个半小时后,生成成功以后如果没有报错,切换到Release模式,再次在INSTALL下生成。再过一个半小时,配置完成。

下一步需要将配置好的项目目录里的库的位置加入到【我的电脑】-【属性】-【高级系统设施】-【高级】-【环境变量】-【系统变量】-Path中,比如我的是:

E:\ProgramData\CV_build II\install\x64\vc12\bin,将其加入到环境变量中保存。

新建一个NVIDA项目,再次切换到属性管理器,和之前一样,Debug x64模式下:双击Microsoft.Cpp.x64.user,配置【VC++目录】—【包含目录】: 

(这里的E:\ProgramData\CV_build II为你用CMake生成的工程存放的目录)

C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v7.5\include

E:\ProgramData\CV_build II\install\include\opencv

E:\ProgramData\CV_build II\install\include\opencv2

E:\ProgramData\CV_build II\install\include

%TBB路径%\include

 

【VC++目录】—【库目录】:     

C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v7.5\lib\Win32

C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v7.5\lib\x64

E:\ProgramData\CV_buildII\install\x64\vc12\lib

% TBB路径%\lib

 

【链接器】—【附加依赖项】: 包含CUDA和OpenCV的所有依赖项

cudart.lib

opencv_imgproc2413d.lib

opencv_calib3d2413d.lib

opencv_contrib2413d.lib

opencv_core2413d.lib

opencv_features2d2413d.lib

opencv_flann2413d.lib

opencv_gpu2413d.lib

opencv_highgui2413d.lib

opencv_legacy2413d.lib

opencv_ml2413d.lib

opencv_nonfree2413d.lib

opencv_objdetect2413d.lib

opencv_ocl2413d.lib

opencv_photo2413d.lib

opencv_stitching2413d.lib

opencv_superres2413d.lib

opencv_ts2413d.lib

opencv_video2413d.lib

opencv_videostab2413d.lib

 

Release模式也可以配置,前面步骤一样,最后链接器配置为除了第一个lib外其他lib末尾去掉d字母,如opencv_videostab2413.lib。(但是这两个不能一起配置的,不然会报错。只用配置Debug版就够了。如果有人实在需要Release版,可以给我留言我再改教程。网上一些人写的分别在Debug|x64和Release|x64编辑Microsoft.Cpp.x64.user的方法我试的是都不行,浪费了我好长时间。。。

 

至此,配置完成了。

//测试程序(此为在随便网上找的)
#include "cuda_runtime.h"    
#include "device_launch_parameters.h"    
#include <cuda.h>    
#include <cuda_device_runtime_api.h>    
#include <opencv2\gpu\gpu.hpp>    
#include <opencv2\gpu\gpumat.hpp>    
#include <opencv2\opencv.hpp>    
#include <opencv.hpp>    
#include <stdio.h>    
#include <iostream>    
#include <memory>  
#include "opencv2/gpu/device/common.hpp"    
#include "opencv2/gpu/device/reduce.hpp"    
#include "opencv2/gpu/device/functional.hpp"    
#include "opencv2/gpu/device/warp_shuffle.hpp"    
using namespace std;  
using namespace cv;  
using namespace gpu; 
template <int nthreads>  
__global__ void compute_kernel(int height, int width, const PtrStepb img, PtrStepb dst)  
{  
    const int x = blockIdx.x * blockDim.x + threadIdx.x;  //x方向检索  
    const int y = blockIdx.y * blockDim.y + threadIdx.y;  //y方向检索  
    const uchar* src_y = (const uchar*)(img + y*img.step);  //原图像  
    uchar* dst_y = (uchar*)(dst + y*dst.step);  
  
    if (x < width && y < height)  
    {  
        dst_y[3 * x] = 255 - src_y[3 * x];        //3通道彩色图像处理  
        dst_y[3 * x + 1] = 255 - src_y[3 * x + 1];  
        dst_y[3 * x + 2] = 255 - src_y[3 * x + 2];  
    }  
}
int main()  
{  
    Mat a = imread("PeaShooter.jpg");  //把测试图片放在和自己建的工程的cpp文件同目录下,或者设置为绝对路径
    GpuMat d_a(a);                 //GPUMat  
    GpuMat d_dst(d_a.size(), CV_8UC3);  
    int width = a.size().width;     //横向,x方向  
    int height = a.size().height;   //纵向,y方向  
  
    const int nthreads = 256;  
    dim3 bdim(nthreads, 1);  
    dim3 gdim(divUp(width, bdim.x), divUp(height, bdim.y));  
  
  
    compute_kernel<nthreads> <<<gdim, bdim >>>(height, width, d_a, d_dst);  
    Mat dst(d_dst);  
    imshow("原始图像", a);  
    imshow("反向图像", dst);  
    waitKey();  
    return 0;  
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win10+OpenCV2.4.13+VS2013+CUDA7.5配置教程 的相关文章

  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • OpenCV C++ 如何知道每行的轮廓数进行排序?

    我有一个二值图像 https i stack imgur com NRLVv jpg在这张图片中 我可以使用重载的函数轻松地对从上到下 从左到右找到的轮廓进行排序std sort 我首先通过以下方式从上到下排序 sort contours
  • OpenCV 2.3 与 VS 2008 - 鼠标事件

    强制性 我是新手 有一份涉及编程的工作 并且我一边工作一边自学 不用说 作为一名老师 我经常犯彻底的错误 我现在所处的位置 我创建了 Graph 类 它 令人惊讶的是 制作了图表 但现在我想通过单击鼠标来修改图形 但我似乎无法让鼠标处理程序
  • ffmpeg AVFrame 到 opencv Mat 转换

    我目前正在开发一个使用 ffmpeg 解码接收到的帧的项目 解码后 我想将 AVFrame 转换为 opencv Mat 帧 以便我可以在 imShow 函数上播放它 我拥有的是字节流 我将其读入缓冲区 解码为 AVFrame f fope
  • 使用 OpenCV 和/或 Numpy 对两个图像进行 Alpha 混合 [重复]

    这个问题在这里已经有答案了 我想将一个填充纯色的半透明矩形添加到已加载的半透明 PNG 中 这是我正在使用的输入图像示例 该图像加载了标准cv2 IMREAD UNCHANGED标志 以便完美保留 alpha 通道 该输入图像存储在imag
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 在 Visual Studio 2012 中安装 OpenCV

    我正在尝试安装 OpenCV 来与 Visual Studio 一起使用 我使用的是2012Pro版本 但我认为它应该与vs10相同 我正在关注这个教程 http docs opencv org doc tutorials introduc
  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件
  • VideoCapture.read() 返回过去的图像

    我在跑python3 6 with openCV on the Raspberry pi OS is Raspbian 代码的大致结构如下 The image以时间间隔 3 5 分钟 捕获 被捕获image在函数中处理并返回度量 精度的种类
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 开放简历fisherfaces

    我有这个问题 当我使用 vs2010 调试 opencv 2 4 0 facetec demo c 运行时 程序出现此错误 OpenCV错误 未知函数中图像步长错误 矩阵不连续 因此其行数无法更改 文件 src opencv modul e
  • 如何使用 AdaBoost 进行特征选择?

    我想使用 AdaBoost 从大量 100k 中选择一组好的特征 AdaBoost 的工作原理是迭代功能集并根据功能的执行情况添加功能 它选择对现有特征集错误分类的样本表现良好的特征 我目前正在 Open CV 中使用CvBoost 我得到
  • cuda-gdb 错误消息

    我尝试使用 cuda gdb 调试我的 CUDA 应用程序 但遇到了一些奇怪的错误 我设置了选项 g G O0构建我的应用程序 我可以在没有 cuda gdb 的情况下运行我的程序 但没有得到正确的结果 因此我决定使用 cuda gdb 但
  • 具有 Cuda Thrust 的多个 GPU?

    如何将 Thrust 与多个 GPU 一起使用 这只是使用 cudaSetDevice deviceId 的问题吗 然后运行相关的 Thrust 代码 使用 CUDA 4 0 或更高版本 cudaSetDevice deviceId 接下来
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • HoughLinesP后如何合并线?

    My task is to find coordinates of lines startX startY endX endY and rectangles 4 lines Here is input file 我使用下一个代码 img c
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能

随机推荐

  • podman 是什么?和 docker 有什么区别?

    什么是 podman Podman 是一种无守护进程的容器引擎 可以创建 管理和运行 OCI 容器 容器可以以非 root 身份运行 也可以使用 root 身份运行 Podman 是由 Red Hat 开发 从 Red Hat Enterp
  • 【BAT 多IF条件实例】

    echo off start 设置常用过滤关键字 set key1 202008 set key2 202009 set key3 20200919 打印出常用关键字 echo 1 key1 2 key2 3 key3 读取用户输入 set
  • Android Studio Git功能使用

    Android Studio Git功能使用 简介 常用功能 提交代码到远程分支 合并分支代码 拉新分支 简介 在Android Studio中使用自带的Git管理工具来进行版本管理 可以轻松应对需要频繁进行本地分支和远程分支操作的项目 比
  • 成功解决pip/conda install cartopy安装失败问题

    使用pip 或conda 安装cartopy pip install cartopy 报错 ERROR Command errored out with exit status 1 command home mlli anaconda3 e
  • 前端学习笔记

    笔记 小知识 V ON绑定事件 V BIND绑定属性 Network中可以查看当前发起的请求 XHR这个标签出现在Chrome浏览器的开发者工具Network选项卡中 XHR类型即通过XMLHttpRequest方法发送的请求即AJAX请求
  • (React入门)状态state与属性props

    状态 State State介绍 状态 state 使用this state来引用 state本身就是状态的意思 状态指的是事物所处的状况 状况就是环境 通常使用state存储简单的视图状态 比如说下拉框是否显示 单选 是否选中 或者需要自
  • try-catch和throw,throws的区别和联系

    区别一 throw 是语句抛出一个异常 throws 是方法抛出一个异常 throw语法 throw lt 异常对象 gt 在方法声明中 添加throws子句表示该方法将抛出异常 如果一个方法会有异常 但你并不想处理这个异常 就在方法名后面
  • 【牛客面试必刷TOP101】Day4.BM15删除有序链表中重复的元素-I和BM17二分查找-I

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 牛客面试必刷TOP101 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 删除有序链表中重复的元素 I 题目描述 解题分析 二 二分查找 I 题目
  • java与数据库数据加密方法

    1 java测试加密代码 AES和HEX加密及解密工具类 AES加解密字符串工具类 public class AesEncrypt public static void main String args String aes en aes
  • mysql数据库总结_mysql数据库总结

    1 root localhost yum y install mysql mysql server 利用yum在线安装mysql数据库 2 root localhost chkconfig mysqld on 设置开机启动mysqld服务
  • Android网络请求,全方位优雅解析

    网络请求的基本流程 网络请求步骤 用户输入一个网址到网页最终展现到用户面前 大致流程总结如下 在客户端浏览器中输入网址URL 发送到DNS 域名服务器 获得域名对应的WEB服务器的IP地址 客户端浏览器与WEB服务器建立TCP 传输控制协议
  • webpack chunkFilename设置name后不生效,id 生效

    preface 最近又开启新项目了 以之前的某个项目为基础搭建 我进行了优化 遇到了 chunkfilename name 配置后不生效 之前配置 webpack 2 6 1 webpack 配置 output path config bu
  • Jenkins从Gitlab拉取代码

    做持续集成经常需要从代码管理 下面讲一下如何使用Jenkins从Gitlab拉取代码 这里采用的是私钥 公钥配对模式 自己本地生成一堆秘钥 gitlab系统配置里选择Deploy Keys 内容为公钥 在Jenkins里新建Credenti
  • 【Python蒙特卡罗法计算圆周率】

    蒙特卡罗法计算圆周率 今天遇到一个很有意思的方法求解圆周率 给大家分享一下 理论基础 蒙特卡罗法也称统计模拟法 统计试验法 是把概率现象作为研究对象的数值模拟方法 是按抽样调查法求取统计值来推定未知特性量的计算方法 蒙特卡罗是摩纳哥的著名赌
  • Qt5.3 MIPS Openwrt交叉编译 移植

    网上关于ARM Linux移植比较多 在此把qt mips linux移植过程记录如下 参考https blog csdn net yihui8 article details 39503645 目标板 MIPS Openwrt 宿主 Ub
  • 计算机基础ppt2010知识点,《计算机应用基础(PowerPoint2010电子演示文稿系统)》...

    计算机应用基础 PowerPoint2010电子演示文稿系统 是教育部 十二五 职业教育国家规划教材 本书以向学习者传授计算机基础知识和培养计算机应用能力为主线 系统地介绍了计算机应用基础的一般理论和实训 本书的内容着重计算机的基础知识 基
  • Sqlserver中如何快速写入千万级测试数据

    数据库结构 id int username nvarchar 50 password nvarchar 50 addtime datetime token nvarchar 50 roleid int 一 程序中写for循环 实测一分钟写入
  • STM32_3(GPIO)

    一 GPIO简介 GPIO General Purpose Input Output 通用输入输出口 8种输入输出模式 输出模式可控制端口输出高电平 驱动LED 蜂鸣器 模拟通信协议输出时许等 输入模式可读取端口的高低电平或电压 用于读取按
  • Qt扩展-KDDockWidgets 简介及配置

    Qt扩展 KDDockWidgets 简介及配置 一 概述 二 编译 KDDockWidgets 库 1 Cmake Gui 中选择源文件和编译后的路径 2 点击Config 配置好编译器 3 点击Generate 4 在存放编译的文件夹输
  • Win10+OpenCV2.4.13+VS2013+CUDA7.5配置教程

    首先说明一下 OpenCV2 3 13之前的版本不支持CUDA7 5 因此配置总是会出问题 在OpenCV官网下载OpenCV2 4 13版本 此版本支持CUDA7 5 另外OpenCV2 4 13是支持VS2013的 但不清楚支不支持VS