none
如何将深度数据流产DepthImageStream对象转换到Emgu中能处理的图象数据类型 RRS feed

答案

  • 您好,在Emgu中, 核心的图像类型是泛型的Image<TColor,TDepth>类型,所以我们只需要将DepthImageFrame转换为Image<TColor,TDepth>即可,可以通过编写以下两个扩展方法实现转换:

            public static Image<TColor, TDepth> ToOpenCVImage<TColor, TDepth>(this DepthImageFrame image)
                where TColor : struct, IColor
                where TDepth : new()
            {
                var bitmap = image.ToBitmap();
                return new Image<TColor, TDepth>(bitmap);
            }
    
            public static Bitmap ToBitmap(this DepthImageFrame image)
            {
                return image.ToBitmap(PixelFormat.Format16bppRgb565);
            }

    然后,在使用中,只需要调用DepthImageFrame的ToOpenCVImage扩展方法即可。

     using (ColorImageFrame imageFrame = _kinectSensor.ColorStream.OpenNextFrame(200))
        {
            if (imageFrame == null)
                return;
    
            using (Image<Bgr, byte> image = imageFrame.ToOpenCVImage<Bgr, byte>())
            {
               //To process the image
            }
    }


    2013年10月7日 11:34
    版主