私は 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] が領域内にあることを認識するために必要な幾何学的計算を理解できれば、同様のアプローチが機能します。しかし、その後でも、従来のデータ構造に格納する方法についての手がかりがありません。
お役に立てれば。