C++ 按像素比较Kinect的RGBA

C++ 按像素比较Kinect的RGBA,c++,kinect,rgb,C++,Kinect,Rgb,我正在尝试使用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")

我正在尝试使用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();
}
void CColorBasics::getRGB(字节*位指针、长宽、长高) { int红色、绿色、蓝色、阿尔法色; 国际注册号[640][480]; 流文件; myfile.open(“asdf.txt”); 对于(int i=0;i=150) { arr[i][ii]=1;
在for..循环中,myfile
ii=ii=ii=ii+4
可能没有副作用……但我还是会避免它。尽管思考它告诉我它应该可以工作。另外,下次使用
x
y
作为循环计数器。但我看不到代码中有明显的错误。您的宽度和高度是否等于或小于数组大小?在没有“红色”检查的情况下,您的调试是否显示了您写出的R值的合理值?您可能会更幸运地在基于色调/饱和度的颜色空间中检查颜色。简单的第一次尝试可能是转换为,任何色调角度在+/-30度之间的像素都将被视为“红色”。(根据您的具体情况,您可以缩小范围。)