您好,在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
}
}