推荐个c#开源离线人脸识别库ViewFaceCore

By admin at 2023-08-29 • 0人收藏 • 386人看过

screenshots.gif

  • 一个基于 SeetaFace6 的 .NET 人脸识别解决方案

  • 本项目受到了 SeetaFaceEngine.Net 的启发

  • 开源、免费、跨平台 (win/linux)

GitHub源码地址:https://github.com/ViewFaceCore/ViewFaceCore


image.png



可以识别出 人的年纪(虽然不太准) / 有无带口罩 / 男&女性别 信息


一个简单图片识别的例子如下:

using SkiaSharp;
using System;
using ViewFaceCore.Core;
using ViewFaceCore.Model;

namespace ViewFaceCore.Demo.ConsoleApp
{
    internal class Program
    {
        private readonly static string imagePath = @"images/Jay_3.jpg";

        static void Main(string[] args)
        {
            using var bitmap = SKBitmap.Decode(imagePath);
            using FaceDetector faceDetector = new FaceDetector();
            FaceInfo[] infos = faceDetector.Detect(bitmap);
            Console.WriteLine($"识别到的人脸数量:{infos.Length} 个人脸信息:\n");
            Console.WriteLine($"No.\t人脸置信度\t位置信息");
            for (int i = 0; i < infos.Length; i++)
            {
                Console.WriteLine($"{i}\t{infos[i].Score:f8}\t{infos[i].Location}");
            }
            Console.ReadKey();
        }
    }
}


1 个回复 | 最后更新于 2023-09-11
2023-09-11   #1

对人脸识别这个库进行了二次封装, 这样就可以在aardio中直接调用了.

image.png

import console; 

import dotNet;
import System.Drawing;

var viewFaceCoredll = dotNet.load("\FaceCoreEx.dll");
var fc = viewFaceCoredll.new("FaceCoreEx.Core");
//获取图片中的人脸数量
var ret = fc.FromFlie(io.fullpath("\images\Jay_4.jpg"));
//位置和得分
for(i=0;ret-1;1){
	var info = fc.GetInfo(i)
	console.log(info.X)
	console.log(info.Y)
	console.log(info.Width)
	console.log(info.Height)
	console.log(info.Score)
}

console.pause(true);


完整工程如下:  文件300多M是因为包含里所有的人脸数据匹配文件

链接:

https://pan.baidu.com/s/1FoXoMMqhy56NVaqR9Zo31g?pwd=uzd4

提取码:uzd4



下面是二次封装的FaceCoreEx类库源码:

将上面工程中的 ViewFaceCore.dll 和ViewFaceCore.Extension.SystemDrawing.dll 引用在类库工程中即可.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using ViewFaceCore.Core;
using ViewFaceCore.Model;

namespace FaceCoreEx
{
    public class Core
    {
        private FaceInfo[] infos;
        public int FromFlie(string path)
        {
            var bitmap = Bitmap.FromFile(path);
            var faceImage = ViewFaceCore.ViewFaceSystemDrawingExtension.ToFaceImage(bitmap);
            FaceDetector faceDetector = new FaceDetector();
            infos = faceDetector.Detect(faceImage);

            bitmap.Dispose();
            faceImage.Dispose();
            faceDetector.Dispose();
            return infos.Length;
        }

        public InfoStruct GetInfo(int index)
        {
            InfoStruct info = new InfoStruct(){
                X = 0,
                Y = 0,
                Width = 0,
                Height = 0,
                Score = 0
            };
            if (index>=0 && index< infos.Length)
            {
                info.X = infos[index].Location.X;
                info.Y = infos[index].Location.Y;
                info.Width = infos[index].Location.Width;
                info.Height = infos[index].Location.Height;
                info.Score = infos[index].Score;
            }
            return info;   
        }

        public struct InfoStruct
        {
            public int X;
            public int Y;
            public int Width;
            public int Height;
            public double Score;
        };

    }
}


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...