C++ 按像素比较Kinect的RGBA
我正在尝试使用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")
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度之间的像素都将被视为“红色”。(根据您的具体情况,您可以缩小范围。)