2013-11-27 2 views
0

저는 Kinect의 일부 기능을 WCF 서비스로 제공하기 위해 프로젝트 작업을하고 있습니다. 직렬화 할 수없는 ColorImageFrame과 같은 일부 클래스에 문제가 있습니다. 나는 그걸 상속하고 "Serializable"로 만들려고했지만 문제는 ColorImageFrame 클래스가 봉인 된 클래스라는 것입니다. 어떤 아이디어?Microsoft.Kinect.ColorImageFrame을 어떻게 serialize 할 수 있습니까?

여기 내가 원하는 것의 간단한 예입니다. 내가 올바른 방향으로하고 있는지 확실하지 않습니다.

[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 서비스를 만들고 싶습니다.

답변

0

속성에서 getter는 ColorImageFrame을 byte []로 변환합니다.

바이트 []을 직렬화 할 수 있습니다!

ColorImageFrame.CopyPixelDataTo (바이트 [])

샘플 :

public byte[] ColorImageFrameData 
{ 
    get 
    { 
     byte[] ret= new byte[_colorImageFrame.PixelDataLength]; 
     _colorImageFrame.CopyPixelDataTo(ret); 
     return ret; 
    } 
} 
바이트 datas를 얻기

이 방법을 사용