C# 如何从视频中提取矩形和非矩形区域?

C# 如何从视频中提取矩形和非矩形区域?,c#,kinect,C#,Kinect,我正在使用Kinect开发一个人脸跟踪应用程序,我的输出如下 我想做的是提取准确的面部区域,要么是黄线区域,要么是红色矩形,如果你能告诉我如何两者都做就好了。基本上,我期待的输出只有感兴趣的黑色区域,否则 现在我有了所有需要的点坐标,但我不确定使用哪个类和方法 请注意,我正在使用视频帧,如果它有任何区别的话 谢谢,我在C++中没有这样做,但是在C++中,运行这样的东西会生成一个RGB值数组: const XnRGB24Pixel *pImage = imageMD->RGB24Data(

我正在使用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循环遍历它们将得到所需的矩形区域:

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
    }
}
for(int y=RECTANGLE_Y1;y
将矩形_X1和矩形_Y1替换为矩形的左下边缘坐标,将矩形_X2和矩形_Y2替换为右上边缘坐标

为了获得非矩形区域内的像素值,如果您能够计算出识别给定[x,y]何时在该区域内所需的几何计算,则类似的方法也会起作用;但即使在那之后,我也不知道如何将其存储在传统的数据结构中

希望这有帮助