微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 OpenCV 为单个帧创建时间戳

如何解决使用 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。