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

若该文为原创文章,未经容许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:http://www.javashuo.com/article/p-wxwjppoc-mo.html
本文章博客地址:http://www.javashuo.com/article/p-oonufjnu-nu.html
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么本身研究python

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)git

OpenCV开发专栏(点击传送门)

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

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

 

前言

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

 

OpenCV编译相关博客

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

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

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

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

OpenCV开发笔记(三十四):红胖子带你傻瓜式编译Qt+openCV3.4.1+opencv_contrib(全网最浅显易懂)spa

OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的openCV4

 

背景

摄像头的码流参数

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

cv::VideoCapture capture;
if(!capture.open("rtsp://admin:Admin123@192.168.0.65: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开发)。

 

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

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

 

原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:http://www.javashuo.com/article/p-wxwjppoc-mo.html
本文章博客地址:http://www.javashuo.com/article/p-oonufjnu-nu.html