1

ここ数週間、Kinect API と新しい SDK (1.5) を使用したプログラミングを調査してきました。基本的には、Kinect センサーからストリーミングされた各画像のどこに目があるかを見つけようとしています。次に、目を構成するピクセルの RGB 値を取得します。pFaceModel2DPoint や pPts2D (どちらも Visualize.cpp にあります) などの変数は、顔を構成する 86 点すべての x、y 値を colorImage (IFTImage* 型) に格納すると主張していますが、テストして再テストしました。これらの変数から価値のあるデータにアクセスすることはできません。

さらに、目に対応するこれらの x、y 値が特定の画像に対して正しかったとしても、必要な各ピクセルの RGB 値にアクセスする方法を見つけることができません。マクロ (FTIMAGEFORMAT_UINT8_B8G8R8A8) を使用して、ピクセル データが格納されている形式を見つけ、byte*pixels = colorImage->GetBuffer() が Kinect からの現在の画像ストリーミングのバッファ ストリームを提供することを知っていますが、何かを行っています。 forループ内のpixels [rowNum * num_cols_per_row + colNum] = [...]のように単純では、何も役に立ちません。

これを機能させることができないことに本当に落胆し、失望しましたが、私に近い問題の解決策を求めて非常に多くのサイトや検索エンジンを検索しましたが、何も見つかりませんでした. OpenCV と Kinect、Kinect 自体、および SDK の MultiFace サンプルの変更を使用して、独自のコードを何度か作成しました。(上記の変数と関数は、MultiFace サンプルからのものです。) 助けていただければ幸いです。ありがとうございました!

更新: Kinect API が不明だったので質問しましたが、試行錯誤の末にこの問題を解決しました。画像フォーマットは実際には RGBX (BGRX としてフォーマット) であるため、バイト* の要素 0 ~ 3 はピクセル 0 に対応し、要素 4 ~ 7 はピクセル 1 に対応するなどです。同じヘッダー ファイルにいくつかの GetBuffer タイプの呼び出しがあるため、画像ストリームを処理するさまざまな方法の間で混乱していました。うまくいけば、これは他の誰かを助けるでしょう!

4

0 に答える 0