人脸识别功能

 一、主要代码功能

本次作业从人脸识别,调用百度AI,去将两张照片去对比,最后输出数据。

 public partial class Form1 : Form
    {
        private string APP_ID = "33711276";
        private string API_KEY = "1nhS4AcrLFffxqDKB73bb1U7";
        private string SECRET_KEY = "rtnRFv5RcE0dMxBWqmL6PX3LYwVAdETW";
        private Face client = null;
        /// <summary>
        /// 是否可以检测人脸
        /// </summary>
        private bool IsStart = false;
        /// <summary>
        /// 人脸在图像中的位置
        
        public Form1()
        {
            InitializeComponent();
            client = new Face(API_KEY, SECRET_KEY);
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
        }
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = "D:\\";
            dialog.Filter = "所有文件|*.*";
            dialog.RestoreDirectory = true;
            dialog.FilterIndex = 2;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (string.IsNullOrEmpty(textBox2.Text))
                {
                    textBox2.Text = dialog.FileName;
                }
                else
                {
                    textBox3.Text = dialog.FileName;
                }
            }

        }
        public string ReadImg(string img)
        {
            return Convert.ToBase64String(File.ReadAllBytes(img));
        }
        private void button1_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)
            { }

        }
    }

 二、分析代码

1.连接人脸识别API

    先定义字符串`APP_ID`, `API_KEY`, `SECRET_KEY`, 用于连接和认证到人脸识别API  
然后定义一个`Face`类型的对象client,用于与API交互的客户端。  IsStart表示是否开始检测人脸。  

2.读取图片,获取信息

     然后使用OpenFileDialog dialog,点击图片,获取图片的路径,在相应的文本框中点击,就是把图片放到哪个存储框里面。

3.提供参数

    然后去对比两张图片的必要数据信息。{"image", ReadImg(path1)}, {"image_type", "BASE64"}, {"face_type", "LIVE"},{"quality_control", "LOW"}, {"liveness_control", "NONE"},,列出这5个信息,进行对比。

4.显示结果

   最后使用result = client.Match(faces),调用参数进行对比,将结果显示在文本框里面。  score显示两张对比相似度数值多少。

三、其他功能

1.拍照

   首先,检查comboBox1(可用视频设备)中的项数。如果没有视频设备(即comboBox1.Items.Count <= 0),就显示一个消息框提示用户插入视频设备。后面如果有视频源正在运行(即videoSourcePlayer1.IsRunning),将会捕获当前视频帧,并将其转换为一个BitmapSource对象,显示图像。
   然后,创建一个PngBitmapEncoder对象,将BitmapSource编码为PNG格式。接着,创建一个新的文件名,并检查该文件是否已存在。如果存在,则删除它。然后,使用File.Create创建一个新的文件流,并使用PngBitmapEncoderSave方法将图像保存到该文件中。在保存图像后,代码检查videoSourcePlayer1是否正在运行,并如果是,则发送停止信号并等待其停止。这是为了确保在关闭窗体之前视频源已被正确关闭。最后,使用this.Close()关闭窗体。

2.人脸注册 

    首先,使用userInfo 从 textBox6 中获取用户资料,并通过 Trim 方法去除前后的空白字符。groupId 从 textBox5 中获取用户组ID,同样通过 Trim 方法去除空白字符。

    检查,视频设备的个数,如果少于1个,则显示一个消息框提示用户插入视频设备。如果视频源(videoSourcePlayer1)正在运行,则捕获当前视频帧并将其转换为 BitmapSource 对象。将 BitmapSource 对象转换为字节数组(img)。

    然后,再检查 result 字符串是否包含 "error_code"。如果包含 "error_code",则显示一个消息框,表明注册失败并显示可能的错误信息。如果不包含 "error_code",则显示一个消息框表明注册成功。

3.识别人脸获取信息

    创建了一个OpenFileDialog对象dialog,可以点击选取照片,然后获取用户选择的文件名(filename)。使用Image.FromFile(filename)读取该文件为一个Image对象。调用一个名为ConvertImageToBase64的函数将图像转换为Base64编码的字符串。

   定义了两个选项字典optionsoptions1,调用client.Detect方法,并传入Base64编码的图像、图像类型(这里硬编码为"BASE64")和选项字典。将Detect方法的返回值(赋值给result。将result转换为字符串,并显示在textBox1中。

四、仓库

人脸识别 · Issue #IA6SIQ · 马彤彤/人脸识别 - Gitee.com

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值