C#项目中调用百度API

目录

一、项目背景及意义

二、涉及使用的技术方法

 三、项目准备阶段:

四、C#界面展示 

五、代码展示

5.1识别图片代码 

5.2选择人脸图

 5.3人脸对比

 六、运行结果展示

6.1 选择图片

 6.2选择人脸图

6.3人脸对比

 1.如果没有点击两个图片会弹出提示

2.两个都有对比结果

 七、实验小结


一、项目背景及意义

        随着计算机视觉和人工智能算法的快速发展,人脸识别技术逐渐被应用于日常生活和商业场景中。同时,百度、阿里、腾讯等互联网平台推出了云服务,将他们的技术共享到云端,以接口的形式向普通用户提供服务。

二、涉及使用的技术方法

 C# SDK压缩工具包:用来提供技术支持。

人脸检测:检测图片中的人脸并标记出位置信息。

图像处理库:如OpenCV或Emgu CV,用于图像处理和人脸识别

文件处理:文件上传、下载、存储等相关技术

 新建交互类:Baidu.Aip.Face.Face是人脸的交互类,为使用人脸的开发人员提供了一系列的交互方法。

新建AipFaceClient:AipFaceClient是人脸识别的node客户端,为使用人脸识别的开发人员提供了一系列的交互方法。

 三、项目准备阶段:

1、搜索百度云平台:百度智能云-云智一体深入产业 (baidu.com)

2、往下翻找点击人工智能-人脸实名认真

3、点击立即使用

4、在左边的列表点击可视化人脸库—新建应用

5、点击创建的人脸库名称,创建用户

四、C#界面展示 

组件界面展示

五、代码展示

5.1识别图片代码 

 OpenFileDialog dialog = new OpenFileDialog();

            dialog.InitialDirectory = "***********";//输入文件路径
            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); }
            }

说明:

        点击后打开文件,用户选择一张图片进行上次,软件可以获取用户的图片数据,调用百度AI接口的Detect方法,传入图像数据、图像类型和可选参数。将返回的结果转换为字符串并显示在textBox1文本框中。

  • 创建一个文件对话框对象(dialog),用于让用户选择文件。设置初始目录、文件类型过滤器等。

  • 显示文件对话框并判断用户是否选择了文件。如果选择了文件,就获取文件名并读取图像数据。

  • 使用 Image.FromFile 方法将图像加载到对象 im 中,并将图像数据转换成 Base64 编码的字符串,以便传输给百度 AI 接口。

  • 定义一个字典 options,存储可选参数,例如人脸检测的返回字段(年龄和颜值)。

  • 调用百度 AI 接口的 Detect 方法,传入图像数据、图像类型和可选参数。将返回的结果转换为字符串并显示在 textBox1 文本框中。

  • 如果出现异常,将异常信息显示在消息框中。

5.2选择人脸图

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;
                }
            }

 说明:

        打开对话框用户依次选择两个图片文件,进行比对。

  1. 创建文件对话框对象创建一个新的 OpenFileDialog 对象,用于打开文件选择对话框。

  2. 设置对话框的初始目录:设置对话框打开时的初始目录为 "D:\"。

  3. 设置文件过滤器设置文件过滤器,允许选择所有类型的文件。

  4. 还原目录设置对话框关闭后恢复到原来的目录。

  5. 设置过滤器索引

    设置过滤器索引为 2。这会影响到默认选择的过滤器。

  6. 显示文件对话框:调用 ShowDialog 方法显示文件对话框,并判断用户是否点击了 "确定" 按钮。如果用户点击了 "确定" 按钮,则继续执行。

  7. 处理用户选择的文件:首先检查 textBox2 的文本是否为空。如果 textBox2 不为空,将选中的文件路径赋值给 textBox3。如果 textBox2 为空,将选中的文件路径赋值给 textBox2

 5.3人脸对比

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、检查了两个文本框(textBox2和textBox3)中的内容,如果其中有一个为空,则显示消息框提示用户选择要对比的人脸图片,并且返回,不执行后续的操作。

       2、尝试从textBox2和textBox3中获取图片路径,然后构造了一个包含两个人脸信息的JSON数组(faces)。每个人脸信息都包括了图片的base64编码、图片类型、人脸类型、质量控制、活体检测等参数。

       3、使用提供的参数调用了一个名为"client"的人脸比对方法,将比对结果显示在textBox1中。

      4、如果在这个过程中出现异常,代码会捕获异常并不做任何处理。

 六、运行结果展示

6.1 选择图片

      选择图片后会显示成功与否和beaty和age值

 6.2选择人脸图

需要点击两次

6.3人脸对比

 1.如果没有点击两个图片会弹出提示

2.两个都有对比结果

 七、实验小结

本次学习了如何在C#环境下处理图像数据和调用外部API:

1.在编程阶段需要明确自己需求,对于组件的应用和摆放需要简洁明了

2.调用百度AI,需要了解相关文档,比如百度AI里的C#-SDK

3.在关键代码处添加捕获异常处理,能增加程序的可运行性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值