软硬件环境
- windows 10 64bit
- nvidia gtx 1070Ti
- opencv 4.2.0
- cuda 10.2
- cudnn 7.6.5.32
- gstreamer 1.16.2
- visual studio 2019
前言
前文 如何调用编译好的opencv库, windows系统c++版 顺利使用自己编译的opencv
库,但是在运行基于caffe
的人脸检测程序中,检测的速度比在ubuntu
下慢了好几倍,本文就来看看,为什么在windows
上的速度会变得这么慢?是不是哪里配置的有问题?本文在原来的基础上添加gstreamer的支持。
首先看看两个系统下的表现
在速度上确实,差距很大,回过头来,我们再去跑跑windows
下的代码,使用debug
模式
从上图可以看到,有一些非常有用的输出信息,检测程序根本没有使用cuda
,而是直接使用了cpu
,难怪速度上不去了。另外,摄像头视频处理当中用到了gstreamer
的后端,查看cmake
的输出发现gstreamer
确实没有使能,而且我们也没有安装gstreamer
gstreamer是什么东东
来自维基百科的介绍
GStreamer 是一个基于流水线的多媒体框架,基于GObject,以C语言写成。
凭借GStreamer,程序员可以很容易地创建各种多媒体功能组件,包括简单的音频回放,音频和视频播放,录音,流媒体和音频编辑。基于流水线设计,可以创建诸如视频编辑器、流媒体广播和媒体播放器等等的很多多媒体应用。
总结一下,gstreamer
就是一个帮你处理各种音视频疑难问题的多媒体框架
安装配置gstreamer
登录gstreamer
的官方网站,下载gstreamer
和gstreamer-devel
这2个安装包
分别进行傻瓜式安装,默认安装地址是 C:\gstreamer
,然后添加PATH
环境变量,如下图所示
cmake配置
打开cmake-gui
,在搜索栏中过滤gstreamer
关键字,然后修改gstreamer
相关的路径
接着进行Configure
,完成后注意看cmake
输出信息
参考资料
- https://xugaoxiang.com/2019/12/26/build-opencv-with-cuda-for-windows/
- https://xugaoxiang.com/2019/12/27/using-opencv-dll-on-windows/
- https://xugaoxiang.com/2019/12/23/fd-opencv-dnn/
- https://zh.wikipedia.org/wiki/GStreamer
- https://gstreamer.freedesktop.org/download/
- https://cvexplorare.wordpress.com/2016/11/15/opencv-gstreamer-windows/
- https://github.com/opencv/opencv/issues/8836