0
我正在开发使用Kinect的面部跟踪应用程序,我有如下的输出。如何提取视频的矩形和非矩形区域?
我想要做的是提取物中的确切脸区域,无论是黄色内衬区域或红色的长方形,这将是巨大的,如果你能告诉我怎么做都。基本上,我期待只有感兴趣的区域输出黑色,否则。
现在我把所有的点的坐标,我需要,但我不知道的类和方法来使用的。
请注意,我用的视频帧的工作,如果这有什么差别。
谢谢
我正在开发使用Kinect的面部跟踪应用程序,我有如下的输出。如何提取视频的矩形和非矩形区域?
我想要做的是提取物中的确切脸区域,无论是黄色内衬区域或红色的长方形,这将是巨大的,如果你能告诉我怎么做都。基本上,我期待只有感兴趣的区域输出黑色,否则。
现在我把所有的点的坐标,我需要,但我不知道的类和方法来使用的。
请注意,我用的视频帧的工作,如果这有什么差别。
谢谢
我还没有在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
阵列是一维和元素存储在其行从底部明智的(最后一行,则该行最后一行时,...)。通过将它们与嵌套去为循环这样会给你你想要的矩形区域:
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]为区域内识别的几何计算;但即使在那之后,我也不知道如何将其存储在传统的数据结构中。
希望这会有所帮助。