1.系统背景及意义
随着计算机视觉技术及人工智能算法的蓬勃发展,人脸识别的概念逐渐被应用到日常生活场景和商业场景中来;另一方面,百度、阿里、腾讯等互联网技术平台提出云服务的概念,将已有技术共享到云端,以接口的形式对普通大众提供服务。
本程序通过调用百度的人脸识别相关的云服务算法,进行开发和搭建,最终实现“人脸注册”和“人脸识别欢迎语提示”等功能。
2.采取的技术
本程序的最终实现形式为Windows桌面程序,本程序主要采用微软的Winform模式进行开发,编程语言为C#。开发所使用的IDE为Visual Studio,辅助工具为Postman、son格式转换工具、Base64编码工具等。
除此之外,本程序还用到了异步技术、Base64编码技术、Json相关技术、Http传输技术等。其中,异步技术用于实时监测摄像头中出现的图像,Base64编码技术用于对图像进行编码、Json相关技术用于对数据进行统一格式处理、Http传输相关技术用于本程序与百度云服务进行通信。
3.编写目的
引导使用者部署、配置、使用人脸识别小程序。
4.运行环境
硬件:带有摄像头的计算机。
软件:Windows11 操作系统。
网络:设备连接外网。
5.前置条件
****** 5.1百度接口配置******
人脸识别小程序的内部算法实现需借助百度接口,所以在启动小程序之前需要提前进行百度接口的相关配置工作。
(1)打开百度智能云网址:百度智能云-云智一体深入产业,注册登录,进入如下界面。

(2)点击立即使用。

(3)点击创建应用。

(3)点击返回应用列表即可看到刚才创建应用的详细信息,并且可以看到获取到的API key和Secret key。

****** 5.2人脸识别程序配置******

5.3 API
private string APP_ID = "85844829";
private string API_KEY = "NK1KQZYnVqNMPNJIB8MLQsAq";
private string SECRET_KEY = "4ln5OnpIG7HxwoODBxw4Rep6XsnVnNUt";
6.代码
6.1 读入图片
public string ReadImg(string img)
{
return Convert.ToBase64String(File.ReadAllBytes(img));
}
6.2 连接摄像头
private void CameraConn()
{
if (comboBox1.Items.Count<=0)
{
MessageBox.Show("请插入视频设备");
return;
}
videoSource = new VideoCaptureDevice(videoDevices[comboBox1.SelectedIndex].MonikerString);
videoSource.DesiredFrameSize = new System.Drawing.Size(320, 240);
videoSource.DesiredFrameRate = 1;
videoSourcePlayer1.VideoSource = videoSource;
videoSourcePlayer1.Start();
}
6.3 人脸检测
该代码转换为Base64编码,并调用某个
client
对象的
Detect
方法来处理这张图片
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = "E:\\教学\\VS222302 - desktop\\baiduAIFaceIdentify-master\\baiduAIFaceIdentify-master\\BaiduAI\\BaiduAI\\bin\\Debug";
dialog.Filter = "所有文件|*.*";
dialog.RestoreDirectory = true;
dialog.FilterIndex = 1;
if (dialog.ShowDialog() == DialogResult.OK)
{
string filename = dialog.FileName;
try
{
Image im = Image.FromFile(filename);
var image = ConvertImageToBase64(im);
string imageType = "BASE64";
// 如果有可选参数
var options = new Dictionary<string, object>{
//{"max_face_num", 2},
{"face_field", "age,beauty"},
{"face_fields", "age,qualities,beauty"}
};
var options1 = new Dictionary<string, object>{
{"face_field", "age"},
{"max_face_num", 2},
{"face_type", "LIVE"},
{"liveness_control", "LOW"}
};
var result = client.Detect(image, imageType,options);
textBox1.Text = result.ToString();
//FaceDetectInfo detect = JsonHelper.DeserializeObject<FaceDetectInfo>(result.ToString());
} catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}
}

6.4 人脸对比
private void button2_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox2.Text) || string.IsNullOrEmpty(textBox3.Text))
{
MessageBox.Show("请选择要对比的人脸图片");
return;
}
try
{
string path1=textBox2.Text;
string path2=textBox3.Text;
var faces = new JArray
{
new JObject
{
{"image", ReadImg(path1)},
{"image_type", "BASE64"},
{"face_type", "LIVE"},
{"quality_control", "LOW"},
{"liveness_control", "NONE"},
},
new JObject
{
{"image", ReadImg(path2)},
{"image_type", "BASE64"},
{"face_type", "LIVE"},
{"quality_control", "LOW"},
{"liveness_control", "NONE"},
}
};
// 带参数调用人脸比对
var result = client.Match(faces);
textBox1.Text = result.ToString();
}
catch (Exception ex)
{ }
}

6.5 人脸注册和人脸登录
代码不便暂时

6.6 代码界面

7.总结
本博客使用C#语言,实现百度ai人脸识别,调用计算机摄像头设备,获取当前用户图像,拥有颜值判断等功能。
标签:
人工智能
本文转载自: https://blog.csdn.net/cyl666666666/article/details/139889643
版权归原作者 cyl666666666 所有, 如有侵权,请联系我们删除。
版权归原作者 cyl666666666 所有, 如有侵权,请联系我们删除。