python - 使用 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()
解决方案
推荐阅读
- twitter-bootstrap - Github 没有完全按照本地查看的方式显示我的页面
- python - Python在大段落的标记之间查找多个字符串
- python - 关闭会话后如何将导入的数据框保留在 Spyder 中
- java - 是否可以使用 Postman 插入 PostgreSql 表?
- r - 如何过滤以上行值为基础的值
- laravel - Laravel 将 Excel 导入数据库:ErrorException 未定义数组键“名称”
- java - 正确设置 JBoss / Wildfly Web 服务端点 (jboss-web.xml)
- java - 创建正方形类扩展矩形类
- javascript - 如何使用css无限期翻转两个表情符号
- r - pheatmap:在轴上更改文本颜色时不打印文本