我需要处理视频并记录一些事件,为了做到这一点,我迭代所有帧并获得信息,但我需要知道该帧出现在视频中的第二个帧。
目前,我使用OpenCV的方式如下:
cap = cv2.VideoCapture(path_str)
while cap.isOpened():
_, frame = cap.read()
if frame is None:
break
data = self.get_data()
store(data, second_of_the_video)
if cv2.waitKey(25) & 0xFF == ord("q"):
break
cap.release()
问题是,我不确定如何获得我可以获得帧的second_of_the_video
,但我不确定如何在视频持续时间内"同步"帧。
你知道我该怎么做吗?
谢谢。
1条答案
按热度按时间ddarikpa1#
可以使用
VideoCapture
类的get(propId)
方法获取视频的当前位置(以毫秒为单位),然后将该位置除以1000,即可计算出当前的秒数。下面是一个如何在代码中获取视频当前秒数的示例:
请注意,视频的帧速率可能不是恒定的,因此帧之间的时间可能不是精确的25毫秒,因此应该使用
CAP_PROP_POS_MSEC
来获取当前位置,而不是仅将变量递增25。