如何序列化Microsoft.Kinect.ColorImageFrame?

时间:2013-11-27 15:01:12

标签: c# wcf kinect kinect-sdk

我正在开发项目以提供一些Kinect功能作为WCF服务。我遇到了一些像ColorImageFrame这样无法序列化的类的问题。我想继承它并使其成为“Serializable”但问题是ColorImageFrame类是一个密封类。有什么想法吗?

这是一个我想做的简单例子;我不确定我是否以正确的方式做到了。

[ServiceContract]
public interface IKinectTools
{     
    [OperationContract]
    ColorImageFrame getVideoStream(); 
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class KinectTools : IKinectTools
{
    KinectSensor sensor;
    ColorImageFrame videoData = null;

    void sensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
    {
        videoData = e.OpenColorImageFrame();

    }
    public ColorImageFrame getVideoStream()
    {          
        return videoData;
    }            
}

我只想构建一个WCF服务,使视频流可供客户端使用。

1 个答案:

答案 0 :(得分:0)

在属性中,getter将ColorImageFrame转换为byte []。

byte []可以序列化!

使用此方法获取字节数据:

ColorImageFrame.CopyPixelDataTo(字节[])

示例:

public byte[] ColorImageFrameData
{
    get
    {
        byte[] ret= new byte[_colorImageFrame.PixelDataLength]; 
        _colorImageFrame.CopyPixelDataTo(ret);
        return ret;
    }
}