我试图让Kinect找到一个红色的形状,似乎很难比较每个像素的实际RGBA值。代码应该是不言自明的。文本输出文件只是为了让我快速表示分配给数组的内容以供将来计算。
void CColorBasics::getRGB (BYTE* bitPointer, LONG width, LONG height)
{
int red, green, blue, alpha;
int arr[640][480];
ofstream myfile;
myfile.open ("asdf.txt");
for (int i=0; i<height; i ++)
{
for (int ii=0; ii<width; ii = ii = ii+4)
{
blue = (int)bitPointer[ii];
green = (int)bitPointer[ii+1];
red = (int)bitPointer[ii+2];
alpha = (int)bitPointer[ii+3];
//calculate differences between BG and R and store result in an array
if (red > (green+blue) && red >= 150)
{
arr[i][ii] = 1;
myfile << "1";
}
else
{
arr[i][ii] = 0;
myfile << "0";
}
}
myfile << "\n";
}
myfile.close();
}
我得到的一些半随机的东西似乎与图片中有多少红色有关,但肯定没有正确格式化,而不是得到类似于RGBA看到的任何东西的图案。基本上,如果像素是“显着红色”,我希望将'1'存储在数组[] []中该像素的位置 - 否则,在该点中存储“0”。提示肯定会受到赞赏!