用winform 使用Vs2022写一个图片人脸识别系统,只有一个button和label控件,点击button,将地址为"C:\Users\王宇航\Desktop\123.png"的图片和地址为"C:\Users\王宇航\Desktop\123"的文件夹所有图片对比,文件夹哪一个图片最像,label就显示图片名,使用百度ai,两个key分别为2vQEURKj9cllcV5U0jNllTWj和 GYOyjSqZbuj8jLm7CGMAQrAVoLCcnRP2,这是基本代码using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Baidu.Aip.Ocr; namespace 测试 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { } } }给出完整代码
时间: 2024-02-26 07:52:25 浏览: 76
好的,以下是完整的代码:
```csharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Baidu.Aip.Face;
namespace 图片人脸识别系统
{
public partial class Form1 : Form
{
// 百度AI的API Key和Secret Key
private const string API_KEY = "2vQEURKj9cllcV5U0jNllTWj";
private const string SECRET_KEY = "GYOyjSqZbuj8jLm7CGMAQrAVoLCcnRP2";
// 图片和人脸识别客户端
private readonly FaceClient faceClient;
private readonly Ocr client;
public Form1()
{
InitializeComponent();
// 初始化百度AI客户端
faceClient = new FaceClient(API_KEY, SECRET_KEY);
client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
}
private void button1_Click(object sender, EventArgs e)
{
// 加载图片
string imagePath = @"C:\Users\王宇航\Desktop\123.png";
byte[] imageData = File.ReadAllBytes(imagePath);
// 人脸识别
var options = new Dictionary<string, object>{
{"face_field", "age,beauty,expression,gender,glasses,landmark,race,quality"},
{"max_face_num", 10},
{"face_type", "LIVE"}
};
var result = faceClient.FaceDetect(imageData, options);
// 显示结果
string bestMatch = "";
float bestScore = 0;
foreach (var face in result["result"])
{
float score = float.Parse(face["face_probability"].ToString());
if (score > bestScore)
{
bestScore = score;
bestMatch = face["face_token"].ToString();
}
}
string folderPath = @"C:\Users\王宇航\Desktop\123";
string[] files = Directory.GetFiles(folderPath);
string bestMatchName = "";
float bestMatchScore = 0;
foreach (string file in files)
{
byte[] fileData = File.ReadAllBytes(file);
var options2 = new Dictionary<string, object>{
{"face_token1", bestMatch},
{"image", Convert.ToBase64String(fileData)}
};
var result2 = faceClient.FaceMatch(options2);
float score = float.Parse(result2["result"]["score"].ToString());
if (score > bestMatchScore)
{
bestMatchScore = score;
bestMatchName = Path.GetFileName(file);
}
}
label1.Text = bestMatchName;
}
}
}
```
在运行该程序之前,你需要先安装Baidu.Aip和Baidu.Aip.Ocr两个NuGet包,在Visual Studio的“工具”菜单中选择“NuGet包管理器”->“管理解决方案的NuGet包”,搜索并安装这两个包。
该程序使用了百度AI的人脸识别和人脸匹配接口,以及百度AI的文本识别接口。当用户点击按钮后,程序会先对指定的图片进行人脸识别,找出最像的人脸,然后遍历指定文件夹下的所有图片,使用人脸匹配接口与最像的人脸进行比对,找出匹配度最高的图片,并将其文件名显示在label控件上。
阅读全文