gpt4 book ai didi

c# - 在 EmguCV 中将视频转换为列表的最佳方法是什么

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

我想将视频中的每一帧都存储在一个通用列表中,以便稍后进行处理。我有如下声明的列表:List<Image<Bgr, Byte>> Stream_to_Images = new List<Image<Bgr, Byte>>(); .

为了导入它,我创建了一个每 33 毫秒计时一次的计时器,以便获取每一帧。触发的事件应将框架导入列表。因此我尝试了以下几行:

要么只是一个简单的.Add()

Stream_to_Images.Add(_capture.QueryFrame());

或者每一帧的计数器,并处理每个 Position 本身。

Stream_to_Images[StreamPosition] = _capture.QueryFrame();
StreamPosition++;

使用第一个,我的整个列表只包含一帧,不是最后一帧,而是视频末尾的一帧,第二个选项导致 ArgumentOutOfRangeException .我的想法用完了,有没有其他方法可以将视频中的每一帧存储在列表中?

** 更新 **

我试图通过使用它从列表更改为数组

imageBox1.Image = _capture.QueryFrame();
image_array.Add(_capture.QueryFrame());

但是,如果我尝试对数组进行交互并显示视频,我只会得到最后一帧的图片。

最佳答案

我认为问题可能与您将图像添加到列表的方式有关。目前,它看起来可能是通过引用添加的,这意味着列表中的所有项目都指向同一个图像。如果您强制 Emgu 创建框架的副本,它应该可以工作:

imageBox1.Image = _capture.QueryFrame();
image_array.Add(new Image<Rgb, byte>(_capture.QueryFrame().Bitmap));

我现在正在深入研究它,但我认为这应该可行。它将创建一个本地副本,而不是依赖引用。

关于c# - 在 EmguCV 中将视频转换为列表的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270248/

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