Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# AVIReader-保存帧的时间过长_C#_.net_Aforge - Fatal编程技术网

C# AVIReader-保存帧的时间过长

C# AVIReader-保存帧的时间过长,c#,.net,aforge,C#,.net,Aforge,我正在开发一个程序,从四个摄像头中抓取图像,并将它们转换为一张只有四种样式的图片,四张图片合一。它会生成一个.avi AVIReader reader = new AVIReader(); List<byte[]> ImagemMainb = new List<byte[]>(); reader.Open(_rootPath + Path.GetFileName(_arqsCam01[i])); while

我正在开发一个程序,从四个摄像头中抓取图像,并将它们转换为一张只有四种样式的图片,四张图片合一。它会生成一个.avi

        AVIReader reader = new AVIReader();
        List<byte[]> ImagemMainb = new List<byte[]>();
        reader.Open(_rootPath + Path.GetFileName(_arqsCam01[i]));
        while (reader.Position - reader.Start < reader.Length)
            {
                Bitmap aux = reader.GetNextFrame();
                Bitmap r = new Bitmap(aux.Width * 2, aux.Height * 2, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                using (var g = Graphics.FromImage(r))
                {
                    g.DrawImage(aux, new Rectangle(0, 0, aux.Width, aux.Height));
                    ImagemMainb.Add(ImageToByte(r));                                                             
                 }                                    
            }
            reader.Close();
            reader.Dispose();
使用这些代码需要太长时间才能完成此过程! 当我有一个84000个位图的列表时,在这种情况下是280个帧速率为5、大小为320x240的视频,这需要永远的时间。 这段代码有什么问题吗?或者有更好的方法吗?

我找到了答案

 AVIReader reader = new AVIReader();
 List<Bitmap> ImagemMain = new List<byte[]>();
 reader.Open(_rootPath + Path.GetFileName(_arqs[0]));
 while (reader.Position - reader.Start < reader.Length)
 {
        using (var aux = reader.GetNextFrame())
        {
             using (var r = new Bitmap(640, 480))
             {
                   using (var g = Graphics.FromImage(r))
                   {                                               
                       g.DrawImage(aux, new Rectangle(0, 0, aux.Width, aux.Height));                                                   
                       ImagemMain.Add((Bitmap)r.Clone());
                   }

             }
         }
  }
AVIReader=新的AVIReader();
List ImagemMain=新列表();
reader.Open(_rootPath+Path.GetFileName(_arqs[0]);
while(reader.Position-reader.Start
我打开文件.avi并添加位图。 有了它,速度更快,几乎不占用任何内存

 AVIReader reader = new AVIReader();
 List<Bitmap> ImagemMain = new List<byte[]>();
 reader.Open(_rootPath + Path.GetFileName(_arqs[0]));
 while (reader.Position - reader.Start < reader.Length)
 {
        using (var aux = reader.GetNextFrame())
        {
             using (var r = new Bitmap(640, 480))
             {
                   using (var g = Graphics.FromImage(r))
                   {                                               
                       g.DrawImage(aux, new Rectangle(0, 0, aux.Width, aux.Height));                                                   
                       ImagemMain.Add((Bitmap)r.Clone());
                   }

             }
         }
  }