[英]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.