OpenCV GPU解码简单例子
基于GPU/cuda的运算能够极大解放CPU的负担,特别是针对复杂图像处理的场景中。该例子主要展示利用GPU的硬解码模块,对本地和网络视频流进行解码和本地显示。环境如下,ubuntu20.04+opencv4.10.0+cuda12.5. 代码逻辑比较简单,不涉及复杂逻辑和算法,直接看代码。
GPU 解码本地视频并进行显示
1 int video_decode_show_test(std:: string fname) 2 { 3 cv::namedWindow("GPU", cv::WINDOW_NORMAL); 4 5 /** 1. 构造视频读取器 */ 6 cv::Ptr<cv::cudacodec::VideoReader> d_reader; 7 try{ 8 d_reader = cv::cudacodec::createVideoReader(fname); 9 }catch(cv::Exception ex) 10 { 11 printf("Failed to open video for %s.\n", ex.err.c_str()); 12 return -1; 13 } 14 15 /** 2. 读取视频帧 */ 16 cv::cuda::GpuMat d_frame; 17 for (;;) 18 { 19 try{ 20 if (!d_reader->nextFrame(d_frame)) 21 break; 22 }catch(cv::Exception ex){ 23 printf("Failed to read frame."); 24 continue; 25 } 26 27 /** 3. 将视频帧从内存中下载到内存中,并显示 */ 28 cv::Mat frame; 29 d_frame.download(frame); 30 cv::imshow("GPU", frame); 31 32 if (cv::waitKey(10) > 0) 33 break; 34 } 35 36 d_reader.release(); 37 return 0; 38 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构