2012-08-31 2 views
0

kinect에 문제가 있습니다. 이벤트에서 컬러 이미지를 가져 오려고 할 때 : Sensor_AllFramesReady 모든 것이 정상입니다. 예 :색상 가져 오기 이미지가 프레임 준비 이벤트가 아닙니다.

using (ColorImageFrame colorFrame = e.OpenColorImageFrame()) { 
    //save image for print 
    if (colorFrame == null) { 
     return; 
    } 
    byte[] colorData = new byte[colorFrame.PixelDataLength]; 
    colorFrame.CopyPixelDataTo(colorData); 
    int averagedImage = colorFrame.Width * PixelFormats.Bgr32.BitsPerPixel/8; 
    int stride = colorFrame.Width * 4; 
    pictureBitmap = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Bgr32, null, colorData, stride); 
} 

하지만 내가 오류 얻을

using (ColorImageFrame Image = Sensor.ColorStream.OpenNextFrame(10)) { 

} 

으로 이벤트 외부에서 동일한 코드를 수행하려고 할 때 이

"이 API는 이벤트 리스너가 설정되어있는 경우 호출 할 수 없습니다"

이 함수를 호출하기 전에 이벤트를 제거하려고 시도하지만 아무 것도 변경되지 않습니다.

+0

이 줄을 삭제합니까? 'kinectSensor.AllFramesReady + = 새 EventHandler (kinectSensor_AllFramesReady); ' – EdgarT

+0

아니요, 위 함수를 호출하기 전에 : Sensor.AllFramesReady - = Sensor_AllFramesReady; – Beno

+0

그 줄을 지우고 – EdgarT

답변

1

이벤트 핸들러 또는 폴링 메소드. 이벤트를 사용하고 마지막 프레임을 저장하여 다른 곳에서 사용할 수 있습니다.

+0

그건 제가 한 일입니다. 하지만 이것은 메모리와 실행 시간 낭비입니다. – Beno

+0

마지막 ColorImageFrame을 전역 변수에 저장하면 메모리가 낭비됩니까? 그것은 단지 이미지 일 뿐이며 어떤 프로세스도 필요하지 않습니다. 이것이 왜 해결책이 아닌지 더 자세히 설명해주십시오. – EdgarT

+0

위의 계산을 할 때마다 이벤트가 초당 30 회 작동합니다. 그러면 시간이 걸립니다. 여기서 문제는 시간과 메모리가 아니라는 것입니다. 둘 다 할 해결책이 없습니까? – Beno

관련 문제