0

Kinect を使用して顔追跡アプリケーションを開発しており、次のような出力があります。

フェイストラッキング

私がやりたいのは、正確な顔の領域、黄色の線の領域または赤い長方形のいずれかを抽出することです。両方を行う方法を教えていただければ幸いです。基本的に、それ以外の場合は黒で関心のある領域のみの出力を期待しています。

現在、必要なポイント座標はすべて揃っていますが、どのクラスとメソッドを使用すればよいかわかりません。

違いがある場合は、ビデオフレームで作業していることに注意してください。

ありがとうございました、

4

1 に答える 1

0

私は C# ではこれを行っていませんが、C++ では、次のようなものを実行すると RGB 値の配列が生成されます。

const XnRGB24Pixel *pImage = imageMD->RGB24Data(); // generate array
XnRGB24Pixel pixelRGB = *pImage; // get the first element of array
byte red = pixelRGB.nRed // read the RED value

配列は 1 次元であり、要素は下から行ごとに格納されます (最後の行、最後の行の前の行、...)。このようにネストされた for ループを使用してそれらを調べると、必要な長方形の領域が得られます。

for(int y = RECTANGLE_Y1; y < RECTANGLE_Y2; y++)
{
    for(int x = RECTANGLE_X1; x < RECTANGLE_x2; x++)
    {
        pixelRGB = pImage[y*RESOLUTION_WIDTH + x]; // get the element
        // work with pixelRGB
    }
}

RECTANGLE_X1 と RECTANGLE_Y1 を長方形の左下端の座標に置き換え、RECTANGLE_X2 と RECTANGLE_Y2 を右上端の座標に置き換えます。

非長方形領域内のピクセルの値を取得するには、特定の [x,y] が領域内にあることを認識するために必要な幾何学的計算を理解できれば、同様のアプローチが機能します。しかし、その後でも、従来のデータ構造に格納する方法についての手がかりがありません。

お役に立てれば。

于 2013-03-17T23:57:46.747 に答える