vs2017配置opencv环境网上的资料比较多也比较全,这里就不重点描述了。不过还是贴一个写的比较详细,图文并茂的博客。如下(建议采用临时配置方法,也就是下面博客中的方法二):
VS2017配置OpenCV4.0(Win10环境)
vs2017配置cuda的资料相对较少,这里重点描述。
首先说碰到的情况。我这里碰到了两种情况:第一种,先装cuda后装vs2017。这样的安装的顺序,一般情况下,cuda和vs2017安装过程不会出现冲突。在确保cuda和vs2017都安装成功情况下,这个时候配置相对简单,主要是把cuda的动态库路径配置好就行。方法和配置opencv环境一样。详细步骤如下:
新建一个vs2017项目,在参考上面贴出配置opencv环境的博客后,你应该知道如下操作(也建议采用临时配置方法):
cublas.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusparse.lib
nppc.lib
nppial.lib
nppicc.lib
nppicom.lib
nppidei.lib
nppif.lib
nppig.lib
nppim.lib
nppist.lib
nppisu.lib
nppitc.lib
npps.lib
nvblas.lib
nvgraph.lib
nvml.lib
nvrtc.lib
OpenCL.lib
第一种情况的配置cuda和opencv环境就完成了,是不是有点简单呀(以前没有配置过类似的就会觉得比较难)。
第二种情况先装vs2017后装cuda会有点小问题。详细情况如下:
安装vs2017肯定没啥问题了。但是安装cuda时,如果还默认安装就会有问题,原因是安装了vs2017。其实,安装cuda时里面会带有vs组件,如果已经安装了vs2017或者比cuda里面自带的版本要高,这个时候cuda安装是不会成功的。正确的方法如下:
安装的路径看个人习惯了。配置cuda的系统环境和cudnn的资料就比较多了,这里就不贴出了。安装好vs2017和cuda后,现在我们来配置vs2017的cuda环境。
由于安装cuda时我们没有勾选vs相关组件,所以,现在需要做一些其他操作。解压cuda安装程序(即解压cuda_10.0.130_411.31_win10.exe),把“CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions”文件复制到自己安装vs2017路径的“\Common7\IDE\VC\VCTargets\BuildCustomizations”。比如我的如下:
配置完这个后,后面的操作就和第一种情况一样了,按照上面的操作就行。下面测试是否安装成功。opencv的测试就不多说了,贴出的博客中全有。
cuda测试一(第一种成功了,后面可以不用测试了):
#include
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include
#include
int main() {
int deviceCount;
cudaGetDeviceCount(&deviceCount);
int dev;
for (dev = 0; dev < deviceCount; dev++)
{
int driver_version(0), runtime_version(0);
cudaDeviceProp deviceProp;
cudaGetDeviceProperties(&deviceProp, dev);
if (dev == 0)
if (deviceProp.minor = 9999 && deviceProp.major == 9999)
printf("\n");
printf("\nDevice%d:\"%s\"\n", dev, deviceProp.name);
cudaDriverGetVersion(&driver_version);
printf("CUDA驱动版本: %d.%d\n", driver_version / 1000, (driver_version % 1000) / 10);
cudaRuntimeGetVersion(&runtime_version);
printf("CUDA运行时版本: %d.%d\n", runtime_version / 1000, (runtime_version % 1000) / 10);
printf("设备计算能力: %d.%d\n", deviceProp.major, deviceProp.minor);
printf("Total amount of Global Memory: %u bytes\n", deviceProp.totalGlobalMem);
printf("Number of SMs: %d\n", deviceProp.multiProcessorCount);
printf("Total amount of Constant Memory: %u bytes\n", deviceProp.totalConstMem);
printf("Total amount of Shared Memory per block: %u bytes\n", deviceProp.sharedMemPerBlock);
printf("Total number of registers available per block: %d\n", deviceProp.regsPerBlock);
printf("Warp size: %d\n", deviceProp.warpSize);
printf("Maximum number of threads per SM: %d\n", deviceProp.maxThreadsPerMultiProcessor);
printf("Maximum number of threads per block: %d\n", deviceProp.maxThreadsPerBlock);
printf("Maximum size of each dimension of a block: %d x %d x %d\n", deviceProp.maxThreadsDim[0],
deviceProp.maxThreadsDim[1],
deviceProp.maxThreadsDim[2]);
printf("Maximum size of each dimension of a grid: %d x %d x %d\n", deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], deviceProp.maxGridSize[2]);
printf("Maximum memory pitch: %u bytes\n", deviceProp.memPitch);
printf("Texture alignmemt: %u bytes\n", deviceProp.texturePitchAlignment);
printf("Clock rate: %.2f GHz\n", deviceProp.clockRate * 1e-6f);
printf("Memory Clock rate: %.0f MHz\n", deviceProp.memoryClockRate * 1e-3f);
printf("Memory Bus Width: %d-bit\n", deviceProp.memoryBusWidth);
}
//读取图片(使用图片的绝对路径)
cv::Mat src = cv::imread("123.png");
//显示图片
cv::imshow("Output", src);
//显示灰度图
cv::Mat Gray;
cvtColor(src, Gray, 6);
cv::imshow("Gray", Gray);
cv::waitKey(0);
return 0;
}
结果图:
cuda测试二:编译cuda自带的例程(自带的例程有的需要安装其他库函数,不建议全部编译)我这里选择如下例程:
点击编译:一般情况编译会出现如下问题:error MSB8036: 找不到 Windows SDK 版本10.0.15063.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。解决方法如下:
然后再点击编译即可:
效果如下: