gpt4 book ai didi

c - OpenCV视频采集和fps问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:47 24 4
gpt4 key购买 nike

我在 MacOSX 上使用 OpenCV 从我的网络摄像头捕捉视频。它工作正常,但是当我尝试在 QuickTime 上播放我捕获的视频时,它播放得太快了。即我从相机拍摄 10 秒,但当我在 QuickTime 上播放时,视频是 2 秒。

我已经尝试将 fps 从 25 更改为 10,并且效果很好,但我确定这不是正确的过程:

CvVideoWriter *writer = 0;  
int isColor = 1;
int fps = 25;
int frameW = 640; // 744 for firewire cameras
int frameH = 480; // 480 for firewire cameras

问题是现在我必须使用网络摄像头进行捕捉,但程序的真正目的是从连接到我的 Mac 的任何外部源捕捉图像。

我正在使用这段代码来捕获:

for (;;) {
cvGrabFrame(capture)
image = cvRetrieveFrame(capture);
cvWriteFrame( writer, image );
}

有什么提示吗?我还在 cvNamedWindow 上显示网络摄像头输出,如何提高此窗口的质量?

非常感谢大家!

安德里亚!

最佳答案

可能是压缩捕获的视频并将其保存到文件中占用过多 CPU。如果是这种情况,那么您实际上只会在 cvNamedWindow 中看到 10 FPS,并且只有 10 FPS 被写入文件。在文件中指定 25 FPS 自然会加快播放速度。

要查看这是否真的是您的问题,您可以尝试仅将图像数据保存在内存中。我还没有尝试过,但我认为您可以使用 cvCloneImage() 来实现。

您也可以尝试其他一些 CPU 开销较低的格式来保存您的视频:

CV_FOURCC('P','I','M','1')    = MPEG-1 codec
CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well)
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

关于c - OpenCV视频采集和fps问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1168214/

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