Opencv 实现GPU解码

本文介绍了如何在Ubuntu 16.04环境下,利用CUDA 9.0和OpenCV 3.4进行GPU视频解码的步骤,包括CUDA和FFmpeg的安装,以及在OpenCV配置时启用CUDA支持。然而,在实际操作中遇到了Segmentation fault错误,通过调试发现是由于nvcuvid库的问题。通过复制和修改CUDA样例代码解决了该问题。尽管如此,测试结果显示使用GPU解码并未带来预期的加速效果,反而速度减慢,作者计划进一步研究其原因。
摘要由CSDN通过智能技术生成

Opencv 实现GPU解码

最近一直关注使用GPU解码视频方面的工作。OpenCV已经实现了GPU解码的功能,本文将介绍一下如何使用OpenCV进行GPU解码,可能遇到的BUGs和解码速度分析。

实验环境:Ubuntu 16.04, Nvidia K40, CUDA 9.0, OpenCV 3.4, FFmepg 3.3.1, Intel E5-2630 v3 2.4GHz

首先需要安装CUDA,安装过程请参考NVIDIA官网教程。第二步,安装FFmpeg,参考安装教程 ,注意enable-cuda,enable-cuvid等。第三步,安装OpenCV,需要注意的是,在cmake过程中,也要-D WITH_CUDA=ON, -D WITH_NVCUVID=ON. 完成这三步以后,实验环境配置完成。

代码主要参考opencv\sources\samples\gpu\video_reader.cpp略做修改,编译链接以后,运行代码会出现错误:

Segmentation fault with gpu video decoding

代码Debug以后,将定位到这一行:

cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);

这个错误的主要原因在于https://github.com/opencv/opencv/issues/10201#issuecomment-379478620:


                
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值