1

在主 UI 线程上使用所有流(颜色、深度、骨架)时,我能够跟踪面部。但是,当我希望在单独的线程上进行所有 kinect 处理时,我会执行以下操作:

kinectThread = new Thread(getKinectSensorData);

public void getKinectSensorData()
    {
            sensor.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(sensor_AllFramesReady); 
    }

我的程序在以下行崩溃,错误如下所示:

faceFrame = newfacetracker.Track(sensor.ColorStream.Format, colorPixelData,
                                       sensor.DepthStream.Format, depthPixelData, currentSkeleton);

错误:

Microsoft.Kinect.Toolkit.FaceTracking.dll 中出现“System.InvalidCastException”类型的未处理异常

附加信息:无法将“System.__ComObject”类型的 COM 对象转换为接口类型“Microsoft.Kinect.Toolkit.FaceTracking.IFTImage”。此操作失败,因为 IID 为“{1A00A7BC-C217-11E0-AC90-0024811441FD}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

颜色流、深度流和骨架流都可以正常工作,但是程序永远无法通过 newfacetracker.Track 代码行。是否无法在非 UI 线程上运行人脸跟踪?请给我提意见。

谢谢

4

0 回答 0