OpenCV开发笔记(十一):OpenCV编译支持Gpu(cuda) 加速开发之win-qt-mingw32编译

若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/102725669

目录

前言

背景

摄像头的码流参数

读取流媒体视频流(默认使用)

判断opencv相关gpu结论

确认开发机上opencv的版本号

Cuda下载和安装

OpenCV下载

OpenCV contrib库介绍与下载

OpenCV编译支持Gpu

步骤一:解压到编译文件夹

步骤二:CMake配置

OpenCV编译Cuda小结


OpenCV开发专栏

OpenCV开发笔记(〇):使用mingw530_32编译openCV3.4.1源码,搭建Qt5.9.3的openCV开发环境

OpenCV开发笔记(一):OpenCV介绍、编译

OpenCV开发笔记(二):cvui交互界面

OpenCV开发笔记(三):OpenCV图像的概念和基本操作

OpenCV开发笔记(四):OpenCV图片和视频数据的读取与存储

OpenCV开发笔记(五):OpenCV读取与操作摄像头

OpenCV开发笔记(六):OpenCV基础数据结构、颜色转换函数和颜色空间

OpenCV开发笔记(七):OpenCV基础图形绘制

OpenCV开发笔记(八):OpenCV常用操作之计时、缩放、旋转、镜像

OpenCV开发笔记(九):OpenCV区域图像(ROI)和整体、局部图像混合

OpenCV开发笔记(十):OpenCV图像颜色通道分离和图像颜色多通道混合

OpenCV开发笔记(十一):OpenCV编译支持Gpu(cuda) 加速开发之win-qt-mingw32编译

OpenCV开发笔记(十二):OpenCV编译支持Gpu(cuda) 加速开发之win-qt-msvc2015编译(opencv3.4.0、cuda9.0、VS2015)

持续补充中…

 

    OpenCV开发笔记(十一):OpenCV编译支持Gpu(cuda) 加速开发之win-qt-mingw32编译

前言

       在开发过程中,正常OpenCV是不会使用GPU来获取视频流的,根据格式opencv获取到mat也占用部分cpu。本篇章将会讲解,添加OpenCV对gpu的支持。

 

背景

摄像头的码流参数

读取流媒体视频流(默认使用)

cv::VideoCapture capture;
if(!capture.open("rtsp://admin:[email protected]:554/h265/ch1/main/av_stream"))
{
    qDebug() << __FILE__ << __LINE__  << "Failed to open camera: 0";
}else{
    qDebug() << __FILE__ << __LINE__  << "Succeed to open camera: 0";
}
namedWindow("111", CV_WINDOW_NORMAL);
cvResizeWindow("111", 400, 300);
while(true)
{
    cv::Mat mat;
    LOG_DEBUG("start read mat");
    capture >> mat;
    LOG_DEBUG("finished read mat");
    LOG_DEBUG("start show");
    cv::imshow("111", mat);
    LOG_DEBUG("finished show");
    LOG_DEBUG("start decode");
    CaptureManager::cvMat2QImage(mat);
    LOG_DEBUG("finished decode");
    int keyValue = cv::waitKey(10);
}

从上图可知,opencv读取没到来图像是处于读取状态,所以先忽略start、finished的问题,然后cv::mat显示花费2ms,使用软解码花费7ms。

       然后查看cpu使用率,如下图:

       再查看gpu使用率:

然后关掉代码,查看,如下图:

此处opencv并未使用GPU获取流媒体,我们去掉显示代码部分,虽然看似影响了GPU的使用率但是在使用进程中并没有代码的进程,如下图:

       然后加入gpu的代码,测试是否使用了gpu,代码如下:

       编译错误,如下图:

判断opencv相关gpu结论

以上得出结论,开发机打开流媒体时,占用了GPU缓存的使用,但是是没有使用GPU进行编解码的(在Processes中没有该进程),软解码时间需要7ms,软解码(mat转rgb888)改为硬解码的必要性也不大。

确认开发机上opencv的版本号

pkg-config –modversion opencv

 

Cuda下载和安装

       本机的显卡,如下图:

       查看改显卡是否支持cuda,查看网址:

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

       确认支持

       官网下载地址:

https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

若下载慢,安装个迅雷下吧。

       下载完后安装

       出现安装失败  

修改一下安装选项,之前是“精简”安装,现在使用“自定义”安装,重新安装如下图:

       安装成功,如下图:

 

OpenCV下载

       下载的是OpenCV3.4.0版本(配合开发机,之前的文章是3.4.1)。

       官网:https://opencv.org/

       当前最新版本为3.4.1。

下载地址:https://opencv.org/releases/page/3/

 

OpenCV contrib库介绍与下载

       Opencv contrib是一些扩展工具库,提供了一些算法和一些工具,如图像模糊算法、2D图像进行三维重建、目标跟踪等等。

       (注意:opencv_contrib一定要和opencv的版本对应)

       下载地址:https://github.com/opencv/opencv_contrib/releases

       选择与opencv对应的版本,这里我们选择opencv3.4.0(与开发机对应)。

 

OpenCV编译支持Gpu

      不带gpu的可以查看《OpenCV开发笔记(一):OpenCV介绍、编译》,可两章对比结合,本次编译描述过程较前面稍微简单点。

步骤一:解压到编译文件夹

步骤二:CMake配置

       将python更新到最新版本3.8.0,并修改路径

       继续编译

       加上python3.8之后,确实能检测到cuda,但是只支持visual studio平台。

 

OpenCV编译Cuda小结

       在windows上的Qt mingw32程序无法使用cuda加速。

       (接下来,将转为windows下的msvc2015 32位进行cuda开发)。

 

若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/102725669

发布了227 篇原创文章 · 获赞 237 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/qq21497936/article/details/102725669