c# - 使用 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);
}
解决方案
我尝试了很多事情,包括锁定位图,但这也没有用。最后,我发现一旦我将红外图像保存在驱动器上,然后尝试对其进行裁剪,它就可以成功运行。我保存了程序生成的所有图像以及用于裁剪的坐标,然后运行了一个单独的过程来裁剪它们。
推荐阅读
- kdb - 如何从 kdb 表中按索引删除列?
- javascript - React 组件不会在 window.location 更改时重新渲染
- reactjs - SASS字体导入嵌套问题
- php - 特定查询未在 Godaddy 主机上的 php 中运行
- python - How to get template plain html without rendering with context vars in Jinja?
- android - 使用 Work Manager 时,BackoffPolicy.EXPONENTIAL 和 BackoffPolicy.LINEAR 有什么区别?
- c# - asp net core app出现MSB3277怎么办
- python - python中的正则表达式[获取电话号码后的文本]
- oh-my-zsh - 在子模块中显示 git 名称
- javascript - 在javascript中连接正则表达式时重复