gpt4 book ai didi

java - 同步截屏 (ffmpeg) 和从网络摄像头捕获 (OpenCV)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:42 28 4
gpt4 key购买 nike

根据我之前的问题,我正在尝试构建一个简单的眼动仪。决定从 Linux 版本开始(运行 Ubuntu)。

要完成这项任务,应该组织截屏和网络摄像头捕获,使来自两个流的帧彼此完全匹配,并且每个流中的帧数完全相同。

屏幕播放 fps 完全取决于相机的 fps,因此每次我们从网络摄像头获取图像时,我们都可以抓取屏幕帧并保持快乐。然而,所有用于快速截屏的工具,例如 ffmpeg,都会返回 .avi 文件作为结果,并需要已知的 fps 才能启动。

另一方面,像 Java+Robot 或 ImageMagick 这样的工具似乎需要大约 20 毫秒才能返回 .jpg 屏幕截图,这对于任务来说非常慢。但每次抓取网络摄像头帧后可能会立即请求它们并提供所需的同步。

所以子问题是:

  1. USD 相机的帧速率在单个 session 期间是否会发生变化?
  2. 是否有任何工具可以逐帧快速截屏?
  3. 有没有办法让ffmpeg只在程序发起这个请求时才向.avi文件推送一个新的帧?

对于我的任务,我可以使用 C++ 或 Java。

其实我是界面设计师,不是驱动程序员,这个任务看起来很低级。如果有任何建议和提示,我将不胜感激!

最佳答案

使用 OpenCV 的 HighGUI 中的 cvGetCaptureProperty(CvCapture* capture, int property_id) 函数和 property_id = CV_CAP_PROP_FPS 来确定网络摄像头每秒捕获的帧数。

使用示例:

CvCapture *capture = 0;
double fps = 0.0;

capture = cvCaptureFromCAM( 0 );
fps = cvCaptureProperty(capture, CV_CAP_PROP_FPS);

关于java - 同步截屏 (ffmpeg) 和从网络摄像头捕获 (OpenCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981053/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com