0


百度AI人脸识别

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 所有, 如有侵权,请联系我们删除。

“百度AI人脸识别”的评论:

还没有评论