OpenCV读取视频时会自动丢掉重复帧,导致读取到的帧数和视频里的实际总帧数不一致,比如说你用视频标注工具打开视频看到视频总共有855帧,可是使用OpenCV的VideoCapture类的read()能读出来的总是只能最多读到847帧,好像后面的8帧丢了,其实这并不是最后面的8帧有问题读不出来,而是OpenCV自动将视频中的所有重复的8帧丢掉了,而不一定是将最后的8帧丢了。

如果一定要读取出全部的帧,得借助ffmpeg,方法一当然是先安装ffmpeg,然后手工执行ffmpeg命令来抽取出全部帧,办法二是在安装了ffmeg基础上继续安装ffmpy包,使用ffmpy也就是ffmpeg python api来写python程序来读取出全部帧,办法三在安装了ffmpeg基础上继续安装sk-video包,使用skvideo的api写python程序来读取出全部的帧。

ffmpeg可以在官网上直接下载对应操作系统版本的已编译好的程序,然后将ffmpeg所在的bin的路径加入到OS的path路径即可,如果是Ubuntu,想使用apt安装,可以使用下面的办法安装:

sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

sudo apt-get update

sudo  apt-get install ffmpeg

安装ffmpy包(关于ffmpy的用法,参考官方文档 https://ffmpy3.readthedocs.io/en/latest/):

pip install ffmpy

安装sk-video包:

pip install sk-video

然后在代码中

import skvideo.io#...
imgarray = skvideo.io.vread(video_file)
for frame in imgarray:#...

注意要import skvideo.io,而不是import skvideo,否则报错:

Traceback (most recent call last):
  File "cie2voc2007.py", line 150, in
    convert(src_path,dest_path)
  File "cie2voc2007.py", line 118, in convert
    imgarray = skvideo.io.vread(video_file)
AttributeError: module 'skvideo' has no attribute 'io'

我查看了一下原因,其实C:\Python38\lib\site-packages\skvideo\下io文件夹是肯定存在的,为何还报错呢,看了一下skvideo下的__init__.py这个文件的内容,它并没有import io,所以报上面的错误。

OpenCV读取视频时丢帧的问题相关推荐

  1. 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题

    解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...

  2. python用OpenCV读取视频帧数、高度宽度等

    python用OpenCV读取视频帧数.高度宽度等 import cv2 import time# 2655 def get_each_frame(video_path):# 读取视频文件videoC ...

  3. opencv读取视频并保存为图片

    1.功能: opencv读取指定文件夹中的视频文件,按照一定的间隔截取某些帧,将这些帧图像连续命名,存储在指定文件夹里. 2.代码如下: (1)IplImage #include <stdlib ...

  4. 使用OpenCV读取视频和视频的相似性度量

    使用OpenCV读取视频和视频的相似性度量 目标 当今,数字摄像设备是随处可见.因此,一定会遇到这样的情况:图像处理已经不能满足要求,而需要进行视频处理.这大致分两种情况: 1.实时采集(对于网络摄像 ...

  5. python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题

    博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...

  6. Opencv读取视频、打开摄像头、保存视频和视频倒放

    原文出处:https://blog.csdn.net/yang_xian521/article/details/7440190 看了这个觉得说得很对,说白了Opencv主要针对是图像处理的计算机视觉库 ...

  7. Opencv学习_3 (Opencv读取视频 视频进度控制 写视频)

    opencv读取视频: 使用opencv读取视频主要用到这几个函数:cvCreateFileCapture  cvQueryFrame (或cvGrabFrame cvRetrieveFrame)   ...

  8. opencv-python 读取视频时如何判断读取到最后一张

    opencv-python 读取视频时如何判断读取到最后一张 读取视频的代码: 通过 if img is None来判断是否读取到最后一帧 import cv2 as cvcapture = cv.V ...

  9. OpenCV读取视频文件的实例(附完整代码)

    OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 #include <iostream> // for standard I/O #inclu ...

最新文章

  1. SpringBoot资料整理(3)
  2. 炉石传说服务器维护有补偿吗,炉石传说官网维护补偿什么时候到 未到原因说明...
  3. datetimepicker时间控件
  4. python-类的基本知识
  5. @excel注解_Excel导入导出Java解决方案推荐
  6. 飞鸽传书2011怎么用之启动常见问题(二)
  7. SpringBoot学习笔记001--创建第一个spring boot应用
  8. Delphi多媒体设计之播放WAVE文件(API)
  9. 多视几何_计算两幅图像之间的基础矩阵F和一副图像上的点在另一福图像上的极线L
  10. Faster rcnn相关文章研究
  11. UBUNTU给已有用户改名
  12. Linux常用软件包管理工具集合(DPKG,APT(APT-GET),RPM,YUM,DNF)
  13. 生物安全实验室送排风设计标准
  14. 31页智慧文旅云服务平台建设方案【附下载】
  15. 移植NES模拟器到STM32G431 详细移植教程 CubeMX HAL库
  16. 我的世界电脑服务器怎么显示键盘,我的世界电脑版操作按键
  17. JQuery从入门到实战
  18. 浅谈StrictMode
  19. 数据库--视图的基本概念以及作用
  20. linux 硬盘使用监控,zabbix3.2监控linux磁盘使用空间

热门文章

  1. 麒麟处理器和鸿蒙是什么,失去了麒麟处理器,鸿蒙将成为华为手机最大的王牌...
  2. 16进制 转为图片 php_ImageMagick(图片处理软件) 分享
  3. 2022年热门职业排行
  4. itext通过pdf模板填充数据并调用打印机打印
  5. java我的世界1.6.2_我的世界1.6.2纯净版下载 我的世界1.6.2下载
  6. 计算机工程两个月能见刊吗,计算机工程与设计杂志
  7. 生态网络连通性定义_生态网络结构与格局演变
  8. 《新侠客英雄传XP》通关简易攻略2
  9. Linux进程相关命令
  10. 解决:OpenCV: FFMPEG: tag 0x5634504d/‘MP4V‘ is not supported with codec id 12 and format ‘mp4 / MP4 (MP