前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#问题攻克之使用winform调用人脸识别接口

C#问题攻克之使用winform调用人脸识别接口

原创
作者头像
算法发
修改2020-03-20 22:53:06
3K0
修改2020-03-20 22:53:06
举报

背景

在前面的文章里,我介绍了如何通过控制台调用人脸识别的接口。在这篇文档,我们来介绍如何使用web form实现人脸识别接口的调用。文章内容主要是两个模块,一个是界面设计,另一个是按钮逻辑的设计,我直接贴上了代码,文章中给出了具体的步骤,希望这个分享能对你有帮助。

WinForm简介

lWinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。

l.NET 提供了大量 Windows 风格的控件和事件,我们可以直接拿来使用,上手简单,开发快速。

lWindows 窗体应用程序是 C# 语言中的一个重要应用,也是 C# 语言最常见的应用。这套 C# WinForm 教程将教会大家如何使用 WinForm 开发一个简单的应用。

l对于每一个使用过 Windows 操作系统的人来说,Windows 应用程序是不会陌生的。使用 C# 语言编写的 Windows 应用程序与 Windows 操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击等操作完成相应的功能。

Windows 窗体应用程序

在 Windows 窗体应用程序中每个窗体都是由若干个控件构成的

所谓控件就是人们常说的能输入文本的位置、能选择的位置、能单击的位置、图片显示的位置等。其中:

l能输入文本的位置对应于 Windows 窗体应用程序中的文本框、多行文本框等。

l能选择的位置对应于 Windows 窗体应用程序中的复选框、单选按钮、下拉列表框。

l能单击的位置对应于 Windows 窗体应用程序中的按钮、超链接标签、菜单栏、工具栏等。

l图片显示的位置对应于 Windows 窗体应用程序中的图片控件。

窗体的属性

l每一个 Windows 窗体应用程序都是由若干个窗体构成的,窗体中的属性主要用于设置窗体的外观。

l在 Windows 窗体应用程序中右击窗体,在弹出的右键菜单中 选择“属性”命令,弹出如下图所示的属性面板。

关于窗体的属性的解释说明,请移步到链接:http://c.biancheng.net/view/2946.html

文本框简介

文本框 (TextBox) 是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。

我们可以根据下方的属性名查看相应的属性的作用。

文本框的具体教程,请移步至链接:http://c.biancheng.net/view/2955.html

按钮简介

l按钮主要用于提交页面的内容,或者是确认某种操作等。

l按钮常用的属性包括在按钮中显示的文字 (Text) 以及按钮外观设置的属性,最常用的事件是单击事件

lRichTextBox 控件在使用时与 TextBox 控件是非常类似的,但其对于读取多行文本更有优势,它可以处理特殊格式的文本。

应用:使用winform调用人脸识别接口的具体操作步骤

第一步. 选择C#语言,选择Windows 窗体应用(.NET Framework)。

第一步
第一步

第二步. 把项目名称命名为WinFormDemo,然后单击创建

设置项目名称
设置项目名称

第三步,新建项目完成,下面是得到初始化的项目,如下所示,界面左边是空白的Form,右边是工程的目录结构。

项目初始状态
项目初始状态

界面设计

第四步,要实现需求,我们先完成界面的设计,使用按钮和富文本框设置如下界面,这个设置界面比较简单。如何拖动按钮设计界面,请参考这篇文章:https://cloud.tencent.com/developer/article/1575587。

第五步. 设计好如下界面后

6. 双击右上方按钮

代码设计

第七步. 把如下代码添加入双击按钮3进入到的地方,给按钮设置点击事件

代码语言:txt
复制
 private void button1_Click(object sender, EventArgs e)
        {
               //
        }

把下面的代码复制到上面的方法里面

代码语言:txt
复制
            String url = richTextBox1.Text;

            try
            {

                Credential cred = new Credential
                {
                    //需要输入你自己的秘钥
                    SecretId = "AK",
                    SecretKey = "EN"
                };

                ClientProfile clientProfile = new ClientProfile();
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("iai.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;

                IaiClient client = new IaiClient(cred, "ap-guangzhou", clientProfile);
                DetectFaceRequest req = new DetectFaceRequest();
                //接收图片链接以及默认好的参数
                string strParams = "{\"Url\":\"" + url + "\",\"NeedFaceAttributes\":1,\"NeedQualityDetection\":1,\"FaceModelVersion\":\"3.0\"}";
                req = DetectFaceRequest.FromJsonString<DetectFaceRequest>(strParams);
                //使用同步接口调用返回结果
                DetectFaceResponse resp = client.DetectFaceSync(req);
                //ConfigureAwait(false).GetAwaiter().GetResult();
                Console.WriteLine(AbstractModel.ToJsonString(resp));
                String s = richTextBox1.Text;
                //设置输出的位置
                richTextBox3.Text = AbstractModel.ToJsonString(resp);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

第八步.然后使用Nuget添加SDK,点击安装。

Nuget的使用,在前面已经介绍过了。

image.png
image.png

9. SDK安装好后没有报错就可以点击按钮运行,结果如下:

image.png
image.png

设置输入base64调用接口返回结果

这部分与上面的部分的步骤是一样的,同理,首先双击按钮,进入控制按钮的方法,把代码添加到里面,输入自己的秘钥即可。

10. 双击按钮

image.png
image.png

11. 进入如下代码

代码语言:txt
复制
// 输入代码内容
        private void button4_Click(object sender, EventArgs e)
        {

        }

12. 添加如下代码到方法体里面

代码语言:txt
复制
//点击按钮后获取base64值
            String base64 = richTextBox2.Text;

            //开始调用接口
            try
            {

                Credential cred = new Credential
                {
                    //需要输入你自己的秘钥
                    SecretId = "",
                    SecretKey = ""
                };

                ClientProfile clientProfile = new ClientProfile();
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("iai.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;

                IaiClient client = new IaiClient(cred, "ap-guangzhou", clientProfile);
                DetectFaceRequest req = new DetectFaceRequest();
                //默认设置好的参数以及base64值
                string strParams = "{\"Image\":\"" + base64 + "\",\"NeedFaceAttributes\":1,\"NeedQualityDetection\":1,\"FaceModelVersion\":\"3.0\"}";
                req = DetectFaceRequest.FromJsonString<DetectFaceRequest>(strParams);
                //使用同步接口调用返回结果
                DetectFaceResponse resp = client.DetectFaceSync(req);
                //ConfigureAwait(false).GetAwaiter().GetResult();
                Console.WriteLine(AbstractModel.ToJsonString(resp));
                String s = richTextBox1.Text;
                richTextBox4.Text = AbstractModel.ToJsonString(resp);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

13. 输入base64,运行测试结果如下:

image.png
image.png

到这一步,输入URL和base64值返回结果的功能都实现了,经过测试没有问题,下面我贴出控制按钮的完整代码。

完整的代码

下面的代码需要输入你自己的秘钥,如下:

代码语言:txt
复制
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 TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Iai.V20180301;
using TencentCloud.Iai.V20180301.Models;

namespace WinFormDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //点击按钮后获取base64值
            String base64 = richTextBox2.Text;

            //开始调用接口
            try
            {

                Credential cred = new Credential
                {
                    //需要输入
                    SecretId = " ",
                    SecretKey = " "
                };

                ClientProfile clientProfile = new ClientProfile();
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("iai.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;

                IaiClient client = new IaiClient(cred, "ap-guangzhou", clientProfile);
                DetectFaceRequest req = new DetectFaceRequest();
                //默认设置好的参数以及base64值
                string strParams = "{\"Image\":\"" + base64 + "\",\"NeedFaceAttributes\":1,\"NeedQualityDetection\":1,\"FaceModelVersion\":\"3.0\"}";
                req = DetectFaceRequest.FromJsonString<DetectFaceRequest>(strParams);
                //使用同步接口调用返回结果
                DetectFaceResponse resp = client.DetectFaceSync(req);
                //ConfigureAwait(false).GetAwaiter().GetResult();
                Console.WriteLine(AbstractModel.ToJsonString(resp));
                String s = richTextBox1.Text;
                richTextBox4.Text = AbstractModel.ToJsonString(resp);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            String url = richTextBox1.Text;

            try
            {

                Credential cred = new Credential
                {
                    SecretId = " ",
                    SecretKey = " "
                };

                ClientProfile clientProfile = new ClientProfile();
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("iai.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;

                IaiClient client = new IaiClient(cred, "ap-guangzhou", clientProfile);
                DetectFaceRequest req = new DetectFaceRequest();
                //接收图片链接以及默认好的参数
                string strParams = "{\"Url\":\"" + url + "\",\"NeedFaceAttributes\":1,\"NeedQualityDetection\":1,\"FaceModelVersion\":\"3.0\"}";
                req = DetectFaceRequest.FromJsonString<DetectFaceRequest>(strParams);
                //使用同步接口调用返回结果
                DetectFaceResponse resp = client.DetectFaceSync(req);
                //ConfigureAwait(false).GetAwaiter().GetResult();
                Console.WriteLine(AbstractModel.ToJsonString(resp));
                String s = richTextBox1.Text;
                //设置输出的位置
                richTextBox3.Text = AbstractModel.ToJsonString(resp);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        private void richTextBox3_TextChanged(object sender, EventArgs e)
        {

        }

        private void richTextBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void richTextBox4_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

功能测试

这下输入图片链接和输入图片base64值都能运行成功了,掌声鼓励一下,谢谢。

image.png
image.png

总结

经过前面的步骤,相信各位也能搭建自己的人脸识别人脸检测的winform应用程序了。主要分为两大块,一块是界面的设计,另一块按钮调用接口,最后将接口返回输出到界面上。最后功能测试已经可以直接输入URL和base64值调用接口返回到界面了,这可以作为一个工具使用,挺方便的,以后可以不必每次登陆界面输入参数即可调用,希望能给你使用winform调用接口赋能,掌声鼓励一下。如果读到文章有错漏,不妨悄悄的告诉我,感激不尽。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • WinForm简介
  • Windows 窗体应用程序
  • 窗体的属性
  • 文本框简介
  • 按钮简介
  • 应用:使用winform调用人脸识别接口的具体操作步骤
  • 界面设计
  • 代码设计
  • 设置输入base64调用接口返回结果
  • 完整的代码
  • 功能测试
  • 总结
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档