背景
mmcv读取视频帧如果遇到error,则会直接停止执行。但是,视频后面的内容有时候也十分重要,所以这个时候就需要一种方式可以继续处理后续帧。
处理方法
修改mmcv
的VideoReader
中的__next__
函数,修改为如下:
def __next__(self):
if self._iter_num >= self.frame_cnt:
raise StopIteration
img = self.read()
self._iter_num += 1
if img is not None:
return img
else:
# raise StopIteration
return None
同时需要在__init__
中新增一个self._iter_num
属性,初始化为0。
def __init__(self, filename, cache_capacity=10):
...
self._iter_num = 0
之后继续执行,就不会出现遇到error视频就停止处理的问题了。