Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DlibDotNet中提取检测到的面_C#_.net Core_Face Detection_Dlib - Fatal编程技术网

C# 在DlibDotNet中提取检测到的面

C# 在DlibDotNet中提取检测到的面,c#,.net-core,face-detection,dlib,C#,.net Core,Face Detection,Dlib,我正在使用DlibDotNet,而且我对它是新手。我有以下代码来自: static void Main(字符串[]args) { //设置Dlib facedetector 使用(var fd=Dlib.GetFrontalFaceDetector()) { var img=Dlib.LoadImage(inputFilePath); //查找图像中的所有面 变量面=fd.运算符(img); foreach(面中的面变量) { //为每个面绘制一个矩形 Dlib.DrawRectangle(im

我正在使用DlibDotNet,而且我对它是新手。我有以下代码来自:

static void Main(字符串[]args)
{
//设置Dlib facedetector
使用(var fd=Dlib.GetFrontalFaceDetector())
{
var img=Dlib.LoadImage(inputFilePath);
//查找图像中的所有面
变量面=fd.运算符(img);
foreach(面中的面变量)
{
//为每个面绘制一个矩形
Dlib.DrawRectangle(img、面、颜色:新RGB像素(0、255、255),厚度:4);
}
Dlib.SaveJpeg(img,“output.jpg”);
}
}
问题是如何提取图像中检测到的所有人脸? 我已经测试了
Dlib.ExtractImageChips()
方法,但我不知道如何正确使用它


提前谢谢。

我在翻阅图书馆后找到了这个方法。以下是实施方案:

DPoint[] dPoint = new DPoint[] {
                    new DPoint(face.TopLeft.X, face.TopLeft.Y),
                    new DPoint(face.TopRight.X, face.TopRight.Y),
                    new DPoint(face.BottomLeft.X, face.BottomLeft.Y),
                    new DPoint(face.BottomRight.X, face.BottomRight.Y),
                };
                    int width = (int)dRectangle.Width;
                    int height = (int)dRectangle.Height;

                    img = Dlib.ExtractImage4Points(img, dPoint, width, height);

其中,img是源图像,dPoint是四个点的数组,表示提取图像的四个角,宽度和高度是提取图像的大小(以像素表示)。

我在挖掘库后找到了该方法。以下是实施方案:

DPoint[] dPoint = new DPoint[] {
                    new DPoint(face.TopLeft.X, face.TopLeft.Y),
                    new DPoint(face.TopRight.X, face.TopRight.Y),
                    new DPoint(face.BottomLeft.X, face.BottomLeft.Y),
                    new DPoint(face.BottomRight.X, face.BottomRight.Y),
                };
                    int width = (int)dRectangle.Width;
                    int height = (int)dRectangle.Height;

                    img = Dlib.ExtractImage4Points(img, dPoint, width, height);

其中,img是源图像,dPoint是四个点的数组,表示提取图像的四个角,宽度和高度是提取图像的大小(以像素表示)。

使用Dlib.GetFaceChipDetails()和Dlib.ExtractImageChips()后,您应该从给定图像中获取人脸图像,只需转换为位图即可。转换
若要将Array2D添加到位图,则应在项目中添加DlibDotNet.Extensions DLL最新版本。代码看起来像

List<Image> images = new List<Image>();

using (var faceChips = Dlib.ExtractImageChips<RgbPixel>(img, chipLocations))
{
    Image image = null;
    //Iterate face chips and add image one by one if multiple images existed
    foreach (var face in faceChips)
    {
        image = face.ToBitmap();
        images.Add(image);
    }
}
列表图像=新列表();
使用(var faceChips=Dlib.ExtractImageChips(img,芯片位置))
{
图像=空;
//迭代面部芯片,如果存在多个图像,则逐个添加图像
foreach(faceChips中的变量面)
{
image=face.ToBitmap();
图片。添加(图片);
}
}

其中显示了如何从图像文件中提取人脸图像。

使用Dlib.GetFaceChipDetails()和Dlib.ExtractImageChips()后,您应该从给定图像中获取人脸图像,只需将其转换为位图即可。转换
若要将Array2D添加到位图,则应在项目中添加DlibDotNet.Extensions DLL最新版本。代码看起来像

List<Image> images = new List<Image>();

using (var faceChips = Dlib.ExtractImageChips<RgbPixel>(img, chipLocations))
{
    Image image = null;
    //Iterate face chips and add image one by one if multiple images existed
    foreach (var face in faceChips)
    {
        image = face.ToBitmap();
        images.Add(image);
    }
}
列表图像=新列表();
使用(var faceChips=Dlib.ExtractImageChips(img,芯片位置))
{
图像=空;
//迭代面部芯片,如果存在多个图像,则逐个添加图像
foreach(faceChips中的变量面)
{
image=face.ToBitmap();
图片。添加(图片);
}
}

其中显示了如何从图像文件中提取人脸图像。

什么是“所有人脸”?您可以使用xy,从人脸左上角,并为每个人脸裁剪图像face@villageTech我是说人的脸。这是一个人脸检测代码。什么是“所有人脸”?你可以使用xy,从人脸左上角裁剪每个人脸的图像face@villageTech我是说人的脸。这是一个人脸检测代码。