Win10 下Cmake3.8.0编译配置 Opencv3.2 + Cuda8.0 + VS2010

Win10 下Cmake3.8.0编译配置 Opencv3.2 + Cuda8.0 + VS2010

早就想了解一下opencv3+cuda了,但是一直没有时间,这几天实验了一下,把环境简单的搭一下,编译一下opencv3。这里编译了两个版本,一个是Release另一个是Debug版本的,编译成两个版本一个方便调试,另一个适用于发布。编译完成之后发现编译之后挺大的,而且编译速度也很慢,我是笔记本是i3-7代的处理器,编译一个版本需要半天多时间。
下面来看一下我这里的环境:
Windows10 专业版 64位
Virtual Studio 2010
Opencv 3.2
Cuda 8.0
Cmake 3.8.0 – cmake-3.8.0-rc2-win64-x64

下面介绍一下安装步骤:
1. 首先需要安装TBB:
自行去官网下载,下载后的文件,解压放在任意目录下,然后在Cmake的配置的时候写入相关路径就可以了。

  1. 安装CUDA:
    去NVIDA官网下载,然后按照默认的安装就行可以了。
  2. OPENCV 和CONTRIB源码下载和配置
    解压opencv3.2和contrib源码,然后接下来就是使用cmake进行配置。下图是opencv的源码路径:

打开Cmake,设置源码路径和目标路径(我的目标路径是:D:\Opencv\opencvCuda\CudaVC10Build),点击Configure。

这时会让你选择环境,对应选择就可以。我的是VS 2010,所以选了上边的配置。然后点击 Finish。

说明:Cmake中红色的部分说明还没有更新,需要点击Configure更新,每次更改完一些配置或者参数之后都要点击Configure更新一下。最后确定配置无误了再点Generate,将会在你的目标文件夹中生成项目文件。

  1. 这里Cmake里边需要先配置点东西:
    把下边的
    WITH_TBB
    WITH_CUDA
    都勾选上,其他的项可以暂时不管。
    然后设置一下TBB的路径,就可以了,Cuda不用设置,因为先安装了,所以直接就都配置好了。
    配置Configure,直到没有红色错误了,就直接Generate。等着Generate完成,你就可以去目标文件夹去看生成的结果了。

4、在你的目标文件中找到OpenCV.sln 文件,并用VS打开:

6、编译完成之后,你会在你的目标文件夹中找到一个install文件夹,里边就有Debug和Release的各种你需要的东西。
install文件夹大概长这样:

编译好了库文件,下面对库文件进行测试:
1、配置环境变量:
在Path中添加: D:\opencv310_CUDA\install\x64\vc12\bin;
(其实我在用户的环境变量中也加了一条,不过貌似加不加都行)
配置完环境变量,重启或注销才能生效

2、配置VS的项目属性:
新建一个控制台应用程序,然后在项目名称上右键->属性:

编译完成之后有一个performance_gpu.exe,这个程序是测试cpu和gpu对比的性能的,下面是我的”GeForce 920MX” 和I3-7600 CPU的性能对比情况,GPU的运算性能还是很牛的。
C:\Users\shenlong>D:\Opencv\opencvCuda\opencv320_vc10_withTBBAndCuda8_install\install\x64\vc10\bin\performance_gpu.exe

VIDEOINPUT LIBRARY - 0.1995 - TFW07

Device 0: “GeForce 920MX” 2048Mb, sm_50, Driver/Runtime ver.8.0/8.0

Note: the timings for GPU don’t include data transfer

CPU, ms   GPU, ms   SPEEDUP       DESCRIPTION

matchTemplate:
184.398 22.3771 x8.24 3000x3000, 32FC1, templ 5x5, CCORR
214.63 76.4628 x2.81 3000x3000, 32FC1, templ 25x25, CCORR
536.663 129.001 x4.16 3000x3000, 32FC1, templ 125x125, CCORR

minMaxLoc:
19.3275 3.32245 x5.82 2000x2000, 32F
80.0574 6.21117 x12.9 4000x4000, 32F
304.139 19.8385 x15.3 8000x8000, 32F

remap:
24.3475 1.13251 x21.5 1000x1000, 8UC4, INTER_LINEAR, BORDER_REPLICATE
82.1895 4.13293 x19.9 2000x2000, 8UC4, INTER_LINEAR, BORDER_REPLICATE
320.333 16.332 x19.6 4000x4000, 8UC4, INTER_LINEAR, BORDER_REPLICATE

dft:
15.5758 9.14862 x1.7 1000x1000, 32FC2, complex-to-complex
68.4957 36.3057 x1.89 2000x2000, 32FC2, complex-to-complex
351.532 148.714 x2.36 4000x4000, 32FC2, complex-to-complex

cornerHarris:
231.604 14.4318 x16 1000x1000, 32FC1, BORDER_REFLECT101
1008.42 60.2772 x16.7 2000x2000, 32FC1, BORDER_REFLECT101
3564.17 219.743 x16.2 4000x4000, 32FC1, BORDER_REFLECT101

integral:
1.40876 2.6825 x0.525 1000x1000, 8UC1
4.72931 22.6212 x0.209 2000x2000, 8UC1
18.9562 56.2427 x0.337 4000x4000, 8UC1

norm:
6.91047 6.93612 x0.996 2000x2000, 32FC4, NORM_INF
15.3296 13.0612 x1.17 3000x3000, 32FC4, NORM_INF
29.975 20.0873 x1.49 4000x4000, 32FC4, NORM_INF

meanShift:
896.396 26.2167 x34.2 400x400, 8UC3 vs 8UC4
3414.51 97.0028 x35.2 800x800, 8UC3 vs 8UC4

FAST:
[error: can’t open ../data/aloeL.jpg]

ORB:
[error: can’t open ../data/aloeL.jpg]

BruteForceMatcher:
1238.29 25.2269 x49.1 match
1212.99 24.3916 x49.7 knnMatch
1170.84 26.6048 x44 radiusMatch

magnitude:
5.37329 3.81861 x1.41 2000x2000, 32FC1
13.1462 8.13406 x1.62 3000x3000, 32FC1
28.1335 13.7003 x2.05 4000x4000, 32FC1

add:
2.82425 3.36488 x0.839 2000x2000, 32FC1
6.20799 7.58944 x0.818 3000x3000, 32FC1
13.1934 13.0197 x1.01 4000x4000, 32FC1

log:
9.47872 2.26958 x4.18 2000x2000, 32F
19.7061 5.02191 x3.92 3000x3000, 32F
34.1571 8.80269 x3.88 4000x4000, 32F

mulSpectrums:
57.3179 6.54501 x8.76 2000x2000
130.15 14.5816 x8.93 3000x3000
247.686 25.7842 x9.61 4000x4000

resize:
54.0771 2.62973 x20.6 1000x1000, 8UC4, up
260.142 10.0503 x25.9 2000x2000, 8UC4, up
571.233 22.5077 x25.4 3000x3000, 8UC4, up
3.51905 0.425339 x8.27 1000x1000, 8UC4, down
10.7333 1.41155 x7.6 2000x2000, 8UC4, down
28.9671 3.09271 x9.37 3000x3000, 8UC4, down

cvtColor:
15.6754 5.6941 x2.75 4000x4000, 8UC1, COLOR_GRAY2BGRA
134.961 9.07922 x14.9 4000x4000, 8UC3 vs 8UC4, COLOR_BGR2YCrCb
160.016 9.41865 x17 4000x4000, 8UC4, COLOR_YCrCb2BGR
50.724 8.82255 x5.75 4000x4000, 8UC3 vs 8UC4, COLOR_BGR2XYZ
47.2838 8.94529 x5.29 4000x4000, 8UC4, COLOR_XYZ2BGR
440.436 11.6987 x37.6 4000x4000, 8UC3 vs 8UC4, COLOR_BGR2HSV
620.386 11.3435 x54.7 4000x4000, 8UC4, COLOR_HSV2BGR

erode:
94.7507 10.1584 x9.33 2000x2000
195.624 22.0857 x8.86 3000x3000
373.351 38.9262 x9.59 4000x4000

threshold:
13.447 0.639762 x21 2000x2000, 8UC1, THRESH_BINARY
35.9581 1.36396 x26.4 3000x3000, 8UC1, THRESH_BINARY
72.8426 2.3113 x31.5 4000x4000, 8UC1, THRESH_BINARY
2.16116 2.20368 x0.981 2000x2000, 32FC1, THRESH_TRUNC [NPP]
5.17755 4.95492 x1.04 3000x3000, 32FC1, THRESH_TRUNC [NPP]
9.24036 8.64236 x1.07 4000x4000, 32FC1, THRESH_TRUNC [NPP]

pow:
27.9441 0.605771 x46.1 1000x1000, 32F
108.132 2.19548 x49.3 2000x2000, 32F
251.506 4.95174 x50.8 3000x3000, 32F
456.103 8.65582 x52.7 4000x4000, 32F

projectPoints:
1110.58 2.81078 x395 1000000
796.858 2.19174 x364 714285
578.326 1.60033 x361 510203
395.173 1.22027 x324 364430
336.528 0.962891 x349 260307

solvePnPRansac:
[error: confidence > 0 && confidence < 1] 5000

GaussianBlur:
38.9446 3.46244 x11.2 1000x1000, 8UC4
173.305 13.2987 x13 2000x2000, 8UC4
371.584 30.3736 x12.2 3000x3000, 8UC4
683.911 52.4725 x13 4000x4000, 8UC4

filter2D:
26.3775 1.57976 x16.7 ksize = 3, 512x512, 8UC4
73.0997 3.69298 x19.8 ksize = 5, 512x512, 8UC4
138.61 6.69799 x20.7 ksize = 7, 512x512, 8UC4
230.957 10.5633 x21.9 ksize = 9, 512x512, 8UC4
320.145 15.3046 x20.9 ksize = 11, 512x512, 8UC4
87.3096 21.0097 x4.16 ksize = 13, 512x512, 8UC4
81.5434 27.6326 x2.95 ksize = 15, 512x512, 8UC4
102.244 5.93009 x17.2 ksize = 3, 1024x1024, 8UC4
266.817 14.3544 x18.6 ksize = 5, 1024x1024, 8UC4
522.097 26.2011 x19.9 ksize = 7, 1024x1024, 8UC4
948.812 41.6351 x22.8 ksize = 9, 1024x1024, 8UC4
1342.37 60.8631 x22.1 ksize = 11, 1024x1024, 8UC4
284.141 83.4153 x3.41 ksize = 13, 1024x1024, 8UC4
239.949 109.829 x2.18 ksize = 15, 1024x1024, 8UC4
397.048 23.332 x17 ksize = 3, 2048x2048, 8UC4
1075.69 56.1142 x19.2 ksize = 5, 2048x2048, 8UC4
2186.86 103.545 x21.1 ksize = 7, 2048x2048, 8UC4
3524.12 165.455 x21.3 ksize = 9, 2048x2048, 8UC4
5249.7 241.89 x21.7 ksize = 11, 2048x2048, 8UC4
772.819 332.932 x2.32 ksize = 13, 2048x2048, 8UC4
795.166 438.687 x1.81 ksize = 15, 2048x2048, 8UC4

pyrDown:
257.527 8.43946 x30.5 4000x4000, 8UC4
140.972 4.85328 x29 3000x3000, 8UC4
67.5335 2.31713 x29.1 2000x2000, 8UC4
17.8979 1.02921 x17.4 1000x1000, 8UC4

pyrUp:
330.228 15.5884 x21.2 2000x2000, 8UC4
87.7771 3.97354 x22.1 1000x1000, 8UC4

equalizeHist:
3.71517 0.83418 x4.45 1000x1000
18.6848 2.52762 x7.39 2000x2000
38.4424 5.50779 x6.98 3000x3000

Canny:
[error: can’t open ../data/aloeL.jpg]

reduce:
67.3614 0.325499 x207 1000x1000, dim = 0
0.384616 0.504699 x0.762 1000x1000, dim = 1
281.984 1.11957 x252 2000x2000, dim = 0
1.23686 1.22358 x1.01 2000x2000, dim = 1
587.379 2.58052 x228 3000x3000, dim = 0
2.65292 2.54502 x1.04 3000x3000, dim = 1

gemm:
[error: The library was build without CUBLAS] 512x512

GoodFeaturesToTrack:
[error: can’t open ../data/aloeL.jpg]

MOG2:
warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:779)
warning: ../data/768x576.avi (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:780)
[error: can’t open ../data/768x576.avi]

average GPU speedup: x36.614

猜你喜欢

转载自blog.csdn.net/chongzi865458/article/details/72474270