gpt4 book ai didi

c# - OpenCV 的 Queryframe() 只返回一帧

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

我想将视频导入我的项目并将其存储到此列表:

List<Image<Bgr, Byte>> MyVideo = new List<Image<Bgr, Byte>>();

我用一个定时器来做这件事,它每 33 毫秒用

捕捉一帧
MyVideo.Add(_capture.QueryFrame());

如果我使用 ImageBox.Image = _capture.QueryFrame() 显示当前捕获的帧,一切都很好,我可以看到每一帧。但是,如果我尝试观看列表中的帧,它始终只会显示视频中的最后一帧。就像视频中的每一帧都被最后一帧所取代。任何想法如何解决这个问题?

最佳答案

EmguCV 的 Capture 类在内部使用单个 Image 来存储每一帧以避免过多的内存分配。一旦 QueryFrame 被调用,内部的 Image 对象就会被新框架的内容覆盖。如果我们想存储框架供以后使用,我们必须在调用 QueryFrame 之后创建一个深拷贝,如下所示:

var FrameCopy = _capture.QueryFrame().Clone();

或者在您的情况下,将深拷贝添加到列表中:

MyVideo.Add(_capture.QueryFrame().Clone());

ImageBox 中可视化视频的情况下,您可以看到所有帧,因为在查询下一帧之前显示了一个帧。

关于c# - OpenCV 的 Queryframe() 只返回一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507346/

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