0

C++ で記述された Kinect の例を変更して、元のコードではスケルトン データのみを取得していたのに対し、新しいコードではスケルトン データとカラー データの両方を取得するようにしました。色データを処理するために実装した ProcessColor メソッドをコードで呼び出すことができないことに気付きました。問題を精査すると、次の部分(init関数に属する)の指定された行が失敗することがわかりました。デバッグ プロセス中に、その行に到達すると、プログラムは ProcessColor メソッドにバウンスし、その後エラーが発生します。

if(NULL!=kinectSensor)
{
    // line that fails is the following
    hr = kinectSensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR);
     if (SUCCEEDED(hr))
    {
        // Create an event that will be signaled when color data is available
        m_hNextColorFrameEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

        // Open a color image stream to receive color frames
        hr = kinectSensor->NuiImageStreamOpen(
            NUI_IMAGE_TYPE_COLOR,
            NUI_IMAGE_RESOLUTION_640x480,
            0,
            2,
            m_hNextColorFrameEvent,
            &m_pColorStreamHandle);
    }
}

以下に、ジャンプする行を示しました。

 HRESULT hr;
NUI_IMAGE_FRAME imageFrame;
HANDLE m_hNextColorFrameEvent(INVALID_HANDLE_VALUE), m_pColorStreamHandle(INVALID_HANDLE_VALUE);
// Line that it jumps
hr = kinectSensor->NuiImageStreamGetNextFrame(m_pColorStreamHandle, 0, &imageFrame);

エラーメッセージは次のとおりです。

KinectSample.exe の 0x5ca5b4a6 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000047。

もしお役に立てれば、公式の Kinect サンプル (ColorBasics-D2D) から上記の部分を追加したことを示したいと思います。プロセス中に非常に注意を払いましたが、クラッシュまたは何かがある可能性があります。

どうすれば解決できますか?何かご意見は?

4

0 に答える 0