当前位置: 首页 > 知识库问答 >
问题:

使用时间戳保存实时视频的帧

东郭展
2023-03-14

我想用树莓派实时捕捉带有时间戳的视频帧。视频由USB摄像头使用python代码中的ffmpeg()函数制作。如何保存当前由USB摄像头在树莓派中制作的视频帧?

我尝试使用opencv的三个函数。cv2。VideoCapture可检测视频,视频。读取()以捕获帧和cv2。imwrite()保存帧。以下是代码,为简洁起见,未提及包含的库。

  os.system('ffmpeg -f v4l2 -r 25 -s 640x480 -i /dev/video0 out.avi')
  video=cv2.VideoCapture('out.avi')
  ret, frame=video.read()
  cv2.imwrite('image'+str(i)+'.jpg',frame)     
  i+=1

该代码保存了以前由网络摄像头制作的视频帧。它不保存当前由网络摄像头录制的视频帧。

共有1个答案

商琛
2023-03-14

正如您在这里看到的,您可以使用camera=cv2访问摄像头。视频捕获(0)。0是所连接相机的索引。您可能需要尝试其他索引,但0通常有效
类似于视频文件,您可以使用ret,frame=camera。读取()以获取帧。在继续处理帧之前,始终检查ret
接下来,您可以按此处所述向框架添加文本。您可以使用time或datetime来获取时间戳。最后保存框架。

注意:如果您使用imwrite,您将很快获得大量图像。根据项目,还可以考虑将帧保存为视频文件。这里解释。

评论后编辑:

这就是如何使用time.time()。首先导入代码顶部的时间模块。time.time()返回自一月1, 1970, 00:00:00以来的秒数。因此,为了获得时间戳,您必须存储开始时间——当程序/视频开始运行时。
然后,在每帧上,调用time.time()并减去开始时间。结果是程序/视频运行的时间。可以将该值用作时间戳。

import time

starttime = time.time()

# get frame
timestamp = time.time() - starttime
cv2.putText(frame,timestamp,(10,500), font, 4,(255,255,255),2,cv2.CV_AA)
 类似资料:
  • 我使用这个库在我的Android应用程序中使用FFmpeg。我正在从视频中提取帧,然后将它们添加到裁剪查看器中。因此,每一帧都需要表示视频中的某个时间帧。下面是我当前提取帧的ffmpeg代码: 感谢任何帮助

  • 问题内容: 这是从网络摄像机保存视频的代码 当我在python中运行它时出现以下错误 请帮我解决这个错误 问题答案: Python / OpenCV 2.4.9不支持cv2.VideoWriter_fourcc,即3.x版本。如果您使用的是2.4.x: 更换 与 这里的好例子如何使用OpenCV和Python录制视频 转载以供参考:

  • 我使用aws kinesis video stream webRTC在reactjs中进行视频聊天。一切都很好。但是我想把视频存储在s3 Bucket中。我应该如何实现这个视频存储?

  • 假设我有一个时间戳值。 编辑 现在我正在使用获取上述时间的毫秒值; 根据Java文档,getTime()方法的定义是

  • 我们将MySQL connector J从5.1.46版本升级到8.0.16。我们的web服务器时区是UTC,现在mysql服务器在IST时区,在升级驱动程序之前,驱动程序的时间戳列值只在UTC中持久化(使用hibenate),但是在移动到J8驱动程序之后,它被保存到mysql服务器时区,即IST。 我们只希望以UTC形式存储/提取时间戳值。

  • 本文向大家介绍opencv实现读取视频保存视频,包括了opencv实现读取视频保存视频的使用技巧和注意事项,需要的朋友参考一下 不得不说opencv是个强大的东东,以前做一个项目的一个模块时使用到进行图形处理,这次是想将一个视频的播放放慢,以前在网上看到opencv有这个功能,今天就不小心尝试了下,东西不多,主要是做个小记录还有一点要注意的小问题说一下,代码不多,基本上也都是copy的网上的 有几