Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在EmguCV中将视频转换为列表的最佳方式是什么_C#_List_Opencv_Emgucv - Fatal编程技术网

C# 在EmguCV中将视频转换为列表的最佳方式是什么

C# 在EmguCV中将视频转换为列表的最佳方式是什么,c#,list,opencv,emgucv,C#,List,Opencv,Emgucv,我想将视频中的每一帧存储在一个通用列表中,以便以后处理。我的列表声明如下:list Stream_to_Images=new list() 为了导入它,我创建了一个计时器,它每33毫秒滴答一次,以获取每一帧。触发的事件应将帧导入列表。因此,我尝试了以下几行: 要么只是一个简单的.Add() 或者每一帧都有一个计数器,每个位置都有自己的地址 Stream_to_Images[StreamPosition] = _capture.QueryFrame(); StreamPosition++; 使用

我想将视频中的每一帧存储在一个通用列表中,以便以后处理。我的列表声明如下:
list Stream_to_Images=new list()

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

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

或者每一帧都有一个计数器,每个位置都有自己的地址

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));
imageBox1.Image=_capture.QueryFrame();
image_array.Add(新图像(_capture.QueryFrame().Bitmap));
我现在正在进一步研究,但我认为这应该行得通。它将创建本地副本,而不是依赖引用

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