В GDI + произошла ошибка об общей ошибке c - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь сохранить данные изображения глубины из kinect, но ошибка, которую я до сих пор не могу исправить. Кто-нибудь знает, как справиться?

        Bmp1 = new Bitmap(depthFrameDescription.Width, depthFrameDescription.Height, PixelFormat.Format16bppGrayScale);
        Rect1 = new Rectangle(0, 0, depthFrameDescription.Width, depthFrameDescription.Height);
        Size_depth = (uint)(depthFrameDescription.Width * depthFrameDescription.Height * 2);
        depthFrameReader = kinectSensor.DepthFrameSource.OpenReader();
        depthFrameReader.FrameArrived += depthReader_FrameArrived;
        kinectSensor.Open();

        private void depthReader_FrameArrived(object sender, DepthFrameArrivedEventArgs e)
       {
           using (DepthFrame depthFrame = e.FrameReference.AcquireFrame())
           {
                if (depthFrame != null)
               {
                   BitmapData cBitmapData = Bmp1.LockBits(Rect1, ImageLockMode.WriteOnly, PixelFormat.Format16bppGrayScale);
                   depthFrame.CopyFrameDataToIntPtr(cBitmapData.Scan0, Size_depth);
                   Bmp1.UnlockBits(cBitmapData);

                   Bitmap newbitmap = new Bitmap(Bmp1.Width, Bmp1.Height, Bmp1.PixelFormat);
                   Bmp1.Dispose();
                   var memorystream = new MemoryStream();
                   newbitmap.Save(memorystream, ImageFormat.Tiff);
                   var filestream = File.OpenWrite(path_test);
                   byte[] newbitmapdata = memorystream.ToArray();
                   memorystream.Write(newbitmapdata, 0, newbitmapdata.Length);
                   memorystream.Close();
               }
           }
       }
...