opencv读取视频文件(opencv读取视频的过程是解码)
深度解析OpenCV中VideoCapture对象背后的视频编码与解码的第三方库支持与速度之谜。
我们都知道OpenCV中的VideoCapture视频读取是借助其它的第三方库来完成编码与解码的过程,当前支持的视频解码主要有:
视频编码主要有:
我们最常见的OpenCV中读取视频文件的函数VideoCapture参数解释如下:
其中参数filename表示文件名称,大家经常忽略第二个参数默认值为CAP_ANY,意思是系统自动检测选择。当读取摄像头或者IP视频流的时候:
其中index表示相机的ID标识。
当读取视频文件时候第二个参数的可以设置为:
当读取摄像头或者视频流时候,第二个参数可以设置为
如何查询当前OpenCV版本支持哪些视频编码与解码的第三方后端库,可以通过下面的代码完成:
运行结果如下:
我的版本是OpenVINO2021.02+OpenCV4.5.1的联合编译版本。所以支持GSTREAMER与INTEL_MFX两个后端库。视频文件解码采用FFMPEG与英特尔MFX库时的对比演示代码如下:
默认下载的OpenCV在Widnows下面只支持CAP_DSHOW这种方式实时视频流解码读取,这种方式我测试下来实时性能没有直接读取视频文件方式高效。单纯的读取我的电脑自带摄像头(酷睿i7 CPU第八代)速度大致只有35FPS左右,而我读取视频文件通过FFMPEG支持,可以轻松达到每秒220FPS左右。而且OpenCV中的FFMPEG是不支持硬件加速的版本,响应更好的响应视频流水线操作就绝对不能这么读取,有什么好的办法?结合OpenCV有个技术线路可以提高视频流的解码速度,提升流水线作业效率。
方法:使用GSTREAMER支持方式
相比FFMPEG第三方库,GSTREAMER支持多种后端,通过软件支持硬件加速的方式解码视频与流水线解码视频操作,同时还支持异步操作,这一波操作之后,解码速度会比最原始的OpenCV自动检测得到的方法要快N多,官方实验给出的数据如下:
实事证明的确可以加速很多!该方法只在ubuntu系统下验证过,widnows系统下还没有验证过,官方说 in theory, can run~~~~作为技术人员看到这句话你懂的,就是坑很多,你自己看着办!
此外就是彻底放弃Windows的DSHOW,有钱买个加速卡,直接硬件解码加速,这样就无忧了。
为了让大家更好得理解与使用OpenVINO框架,我特别整理了OpenVINO计算机视觉加速的学习路径,图示如下:
相关内容
-
无法读取U盘中的数据
无法读取U盘中的数据,,核心提示:我有一个512MB的U盘,把它插在电...
-
笔记本电脑不支持混音|笔记本电脑不支持混音怎
笔记本电脑不支持混音|笔记本电脑不支持混音怎么办,,1. 笔记本...
-
你支持800万用户Firefox吗如何能在火狐浏览器上
你支持800万用户Firefox吗如何能在火狐浏览器上中国的道路,,2...
-
正式发布的小米9支持5G信号吗对此你怎么看
正式发布的小米9支持5G信号吗对此你怎么看,小米,怎么看,正式发...
-
支持高清的下一代:新版本的WinDVD出炉!{图}
支持高清的下一代:新版本的WinDVD出炉!{图},,今天,InterVideo Win...
-
鸿蒙这么优秀,为什么大家不支持一下国产华为
鸿蒙这么优秀,为什么大家不支持一下国产华为,华为,鸿蒙,鸿蒙这...
-
电脑系统一般多大内存|电脑系统支持多大内存
电脑系统一般多大内存|电脑系统支持多大内存,,电脑系统支持多...
-
磁盘读取错误发生错误计算机无法启动(解决方案)
磁盘读取错误发生错误计算机无法启动(解决方案),,故障现象: 计算...
-
怎么解决Win10显示器输入不支持导致系统无法运
怎么解决Win10显示器输入不支持导致系统无法运行,不支持,显示...
-
记忆棒电脑读取不出来|psp记忆棒电脑读不出来
记忆棒电脑读取不出来|psp记忆棒电脑读不出来,,psp记忆棒电脑...
-
电脑怎么读取平板电脑内存|平板怎么读取硬盘
电脑怎么读取平板电脑内存|平板怎么读取硬盘,,1. 平板怎么读取...
-
读取报废电脑硬盘|台式机报废了硬盘如何利用
读取报废电脑硬盘|台式机报废了硬盘如何利用,,台式机报废了硬...
-
支持DDR3!AM3接口790gx主板的评价
支持DDR3!AM3接口790gx主板的评价,,二月,在主板市场,各种各样的AM...
-
三星大器五g9298支持电信吗
三星大器五g9298支持电信吗,比我,我的,三星大器五g9298支持电...
-
硬盘故障电脑无法读取|电脑读取硬盘失败
硬盘故障电脑无法读取|电脑读取硬盘失败,,1. 电脑读取硬盘失败...