在ASP.NET中使用C#进行人脸检测

pkwftd7m  于 2023-10-21  发布在  .NET
关注(0)|答案(4)|浏览(123)

我在找一种特殊的面部识别方法。我想检测所有的脸都位于(这就是全部)的学生在一个类图片的图像。
换句话说,我并不是要比较两张脸,看看它们是否匹配。
如何在C#中做到这一点?我在NuGet上似乎找不到任何关于这一点的开源项目,我也在Codebooks上找过。

8ulbf1ek

8ulbf1ek1#

我个人对于任何计算机视觉相关需求的偏好是使用http://opencv.willowgarage.com/wiki/,然而,它不是为C#原生的。
然而,在快速搜索谷歌后,我发现http://www.emgu.com/wiki/index.php/Main_Page说:“Emgu CV是一个跨平台的.Net Package 英特尔OpenCV图像处理库。Allowing OpenCV functions to be called from .NET compatible languages such as C#、VB、VC++、IronPython等 Package 器可以在Mono中编译并在Linux / Mac OS X上运行。”

tyg4sfes

tyg4sfes2#

既然Face已经被Facebook收购,我就使用Sky Biometry,它有一个C# .NET API,而且是免费的。
它是基于云的,显然需要互联网连接,但谁在乎呢。

0g0grzrc

0g0grzrc3#

我建议检查基于Python实现的Face Recognitionhttps://github.com/ageitgey/face_recognition)的Face Recognition.Nethttps://github.com/takuya-takeuchi/FaceRecognitionDotNet)。两者都是MIT许可证的开源。
另一个选项是来自Microsoft的Cognitive Services - Face,您可以直接从Azure或从本地Docker使用它。在这里你可以找到更多关于它:https://learn.microsoft.com/en-us/azure/cognitive-services/face/

35g0bw71

35g0bw714#

与此同时,有更多的库和方法可用。基于深度学习和ONNX,这些项目可能值得一看(都是MIT许可的):

在一组照片中找到所有的面孔可以这样做使用FaceAiSharp:

  1. dotnet new console
dotnet add package FaceAiSharp.Bundle
dotnet add package Microsoft.ML.OnnxRuntime

1.编辑Program.cs

using FaceAiSharp;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

// adjust these lines to load your own image
using var hc = new HttpClient();
var groupPhoto = await hc.GetByteArrayAsync(
    "https://raw.githubusercontent.com/georg-jung/FaceAiSharp/master/examples/obama_family.jpg");
var img = Image.Load<Rgb24>(groupPhoto);

var det = FaceAiSharpBundleFactory.CreateFaceDetector();
var faces = det.DetectFaces(img);
foreach (var face in faces)
{
    Console.WriteLine($"Found a face with confidence {face.Confidence}: {face.Box}");
}
  1. dotnet run
  • 免责声明 *:我是FaceAiSharp的作者。如果有些东西对你不起作用或可以改进,请随意提出问题。

相关问题