VS2019+OpenCV4.7.0+OpenCV_contrib4.7.0+CUDA安装+配置视频硬解码保姆级别教程

本文主要是介绍VS2019+OpenCV4.7.0+OpenCV_contrib4.7.0+CUDA安装+配置视频硬解码保姆级别教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在算法开发过程中,涉及基于opencv的rtsp流硬解码,这里设计结合当前所有的资料,实现了现有opengl相关的所有跟视频硬解码相关的功能,下面对opencv4.7.0的编译流程进行说明:

一、准备工作

  1. 下载opencv :opencv-4.7.0-windows.exe;
  2. 下载vs2019Visual Studio Enterprise 2019;
  3. 下载Video_CodecVideo_Codec_SDK_10.0.26,该软件需要与Cuda版本对应
  4. 下载cudacuda_10.1.243_426.00_windows.exe,这个可以任意选择
  5. 下载gstreamer:gstreamer-1.0-devel-msvc-x86_64-1.22.7.msi 和gstreamer-1.0-msvc-x86_64-1.22.7.msi
  6. 下载cmakecmake 3.21.3

二、编译opencv4.7.0

特殊说明:opencv相关的第三方库已经下载完成,都在opencv4.7.0目录下。

  1. 1.Cmake配置
  2. 先配置cmake设置,选择vs2019和x64,之后点击finish。

 2.配置OPENCV_EXTRA_MODULES_PATH:

        在Search栏输入OPENCV_EXTRA_MODULES_PATH,添加下面的opencv_contrib-4.7.0路径,opencv_contrib-4.7.0已经下载好,在opencv4.7.0目录下,之后点击configure,需要连续点击2次:

OPENCV_EXTRA_MODULES_PATH = D:/Opencv/Opencv-4.7.0/opencv_contrib-4.7.0/modules

3.去掉BUILD_TESTS、BUILD_DOCS、BUILD_PERF_TESTS、BUILD_EXAMPLES等:

         在search中分别输入test、python、doc、example,把勾选都去掉;

        一般情况下,在上面的configure后,把滚动条拉倒最上方,把下面的几个选项的勾去掉,需要把没有用的选项去掉,之后再点击configure,一般需要点击两次。

4.添加cuda选项:

   在Search栏输入cuda,把下面添加WITH_CUDA、BUILD_CUDA_STUBS、OPENCV_DNN_CUDA进行勾选,之后点击configure,需要连续点击2次。

        在Search栏输入cuda和enable,把下面添加CUDA_FAST_MATH和ENABLE_FAST_MATH进行勾选,且把CUDA_ARCH_BIN=6.1;7.0;7.5(我使用的是GTX1050TI,最小算力为6.1,需要保留以上的即可)之后点击configure,需要连续点击2次。

5.添加nonfree选项:

        在搜索栏搜索nonfree,勾选BUILD_ENABLE_NONFREE选项,之后点击Configure,需要连续点击2次。

 6.NVCUVID选项:

        在search中输入nvcu,勾选WITH_NVCUVID和WITH_NVCUVIDNC,把Video_Codec_SDK_10.0.26\Interface中的cuviddec.h和nvcuvid.h⽂件拷⻉到”CUDA安装⽬录\CUDA\v10.1\include”⽂件夹下,把 Video_Codec_SDK_10.0.26\Lib\x64中的nvcuvid.lib和nvencodeapi.lib拷⻉到“CUDA安装⽬录\CUDA\v10.1\lib\x64”⽂件夹下。再次点击configure。如果在NVIDIA CUDA选项中出现NVCUVID字段,说明配置成功。

7.配置gstreamer

        在search中输入gstreamer,分别添加对应的路径,如下图所示,表示成功:

 8.添加opengl选项:

        在搜索栏搜索opengl,勾选WITH_OPENGL选项,之后点击Configure,需要连续点击2次,opencv配置完成。

9.添加world选项:

        在搜索栏搜索world,勾选BUILD_opencv_world选项,之后点击Configure,需要连续点击2次,opencv配置完成。

10.生成vs2019工程 

        最后点击Generate,生成opencv的vs2019的工程,进入目录后打开工程。

 11.编译opencv工程:

        用vs2019打开工程,设置为Release x64编译模式,最后把INSTALL设置为启动选项,之后编译工程,生成的算法库在install目录下:

三、多线程解码 

        基于Code的多线程解码,以及opengl的显示方法如下: 

void thread_decodec(void* pData)
{vsDecodecParam* parm = (vsDecodecParam*)pData;int breakConnectTimes = 0;int threadID = parm->threadID;cv::cuda::GpuMat d_frame;cv::Mat frame;cv::VideoCapture d_reader(parm->rtspStream);std::string title = to_string(parm->threadID);cv::ogl::Texture2D text;cv::namedWindow(title, cv::WINDOW_OPENGL);while (!g_exitFlag){if (!d_reader.read(frame)){//break;std::this_thread::sleep_for(std::chrono::milliseconds(500));breakConnectTimes++;if (breakConnectTimes > 10)//重新连接{d_reader = cv::VideoCapture(parm->rtspStream);std::this_thread::sleep_for(std::chrono::milliseconds(2000));}}breakConnectTimes = 0;g_mtx.lock();d_frame.copyTo(m_decodeGPU[threadID]);//m_decodeGPU[threadID].upload(frame);g_mtx.unlock();text.copyFrom(d_frame, true);cv::imshow(title, text);if (cv::waitKey(3) > 0)break;}
}

        opencv4.7.0的离线版本已经下载完成,只需要把上面依赖的源码下载即可,opencv的codec和gestreamer已经上传的百度网盘,版本有升级,按照上面的步骤即可,有需要的可以下载:

        链接:https://pan.baidu.com/s/1diaB5gPXqosIdvHcqJrJIg 
        提取码:m9d2 
 

        

这篇关于VS2019+OpenCV4.7.0+OpenCV_contrib4.7.0+CUDA安装+配置视频硬解码保姆级别教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/557783

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关