繁体   English   中英

使用 Kinect C# 从红外 bitmap 裁剪人脸图像

[英]Crop face image from infrared bitmap using Kinect C#

我正在尝试从 Kinect 获取 png 格式的头部/面部图像,以便稍后处理面部图像。 我可以使用以下方法计算人脸颜色坐标:

var face = faceFrame.FaceBoundingBoxInColorSpace;

double x = face.Left;
double y = face.Top;
double w = face.Right - face.Left;
double h = face.Bottom - face.Top;
..additional padding to get face bounds
return new Rect(x, y, w, h);

我使用返回的值来裁剪 colorBitmap 并将其存储在我的驱动器上。

var Headbounds = ComputeHeadBounds();
var CroppedImage = colorBitmap.Crop(Headbounds);
//Save Image..

当我尝试类似获取红外人脸图像时,它无法正常工作。 我得到一个黑色的图像。

var face = faceFrame.FaceBoundingBoxInInfraredSpace;

double x = face.Left;
double y = face.Top;
double w = face.Right - face.Left;
double h = face.Bottom - face.Top;

var coordinates = ComputeInfraredHeadBounds();
var InfraCroppedImage = infraBitmap.Crop(coordinates);

//Saving FaceImage

PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(InfraCroppedImage));

using (var fs = new FileStream(projectDirectory + filename + ".png", FileMode.Create, FileAccess.Write))
{
encoder.Save(fs);
}

我尝试了很多事情,包括锁定 bitmap 但这也没有用。 最后,我发现一旦我将红外图像保存在驱动器上,然后尝试对其进行裁剪,它就可以成功运行。 我保存了程序生成的所有图像以及用于裁剪的坐标,然后运行了一个单独的过程来裁剪它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM