首页 > 解决方案 > 使用 OpenCV 为单个帧创建时间戳

问题描述

你好,这是我的第一篇文章,我对此很陌生。我看到 stackoverflow 的社区非常好而且很有帮助,所以我来这里学习一下!

我目前正在将视频切成帧,我能够找到其他代码并打印出帧数和帧图像但是,我希望能够打印出带有帧数注释的帧(我们正在使用 30fps ) 和图像上的时间(以分钟、秒和毫秒为单位)。

在我的另一个问题中,我对这段代码有点困惑,下面这段代码到底做了什么

calc_timestamps.append(calc_timestamps[-1] + 1000/fps)

print('帧 %d 差异:'%i, abs(ts - cts))

import cv2
import datetime
cap = cv2.VideoCapture("/content/gdrive/Shareddrives/SimonNguyen/Exp12_Videos/Exp12_icevid.wmv")

fps = cap.get(cv2.CAP_PROP_FPS)
timestamps = [cap.get(cv2.CAP_PROP_POS_MSEC)]
f_pos = cap.get(cv2.CAP_PROP_POS_FRAMES)
calc_timestamps = [0.0]

while(cap.isOpened()):
    frame_exists, curr_frame = cap.read()
    if frame_exists:
        timestamps.append(cap.get(cv2.CAP_PROP_POS_MSEC))
        f_pos.append(cap.get(cv2.CAP_PROP_POS_FRAMES))
        calc_timestamps.append(calc_timestamps[-1] + 1000/fps)
    else:
        break

cap.release()

for i, (ts, cts) in enumerate(zip(timestamps, calc_timestamps)):
  print('Frame:'%i, ts)
   # print('Frame %d difference:'%i, abs(ts - cts))
#print frames
while(True):
  (ret, frame) = cap.read()
 #cv2_imshow(frame)
  if not ret:
    break
cap.release()
cv2.destroyAllWindows()

标签: pythonopencvframevideo-processing

解决方案


推荐阅读