【C#】 MVC4 开发小程序-实现人脸识别-本地和手机预览使用IP测试

简介: 小程序Camera组件拍照上传图片到指定的服务器(本地或者外网的IP服务器),然后C# MVC后台调用百度人脸识别接口,实现人脸识别功能呢
作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More

1、下载微信开发者工具

2、下载微信小程序媒体组件

源码-camera组件-1526881707172

3、在默认组件的拍照按钮的单击事件上添加如下代码

wx.uploadFile({
    url: 'http://166.61.66.66/Home/Upload',
    filePath: res.tempImagePath,
    name: 'file',
    header: { 'content-type': 'multipart/form-data' },
    method: 'POST',
    formData: {'user': 'test'},
    success: function (res) {
        var data = res.data;
        console.log(data);
        var _json = JSON.parse(JSON.parse(data));

        tishi(1,_json);
    },
    fail: function (res) {
        tishi(3,res);
    }
})

function tishi(_t,_v){
    if (_t == 1 && _v.result!=null){
        wx.showModal({
            title: '提示',
            content: '你的颜值分:' + parseInt(_v.result.face_list[0].beauty),
            success: function (res) {
            }
        })
    }
    else{
        wx.showModal({
            title: '提示',
            content: 'type:' + _t + "=" + (_v.errMsg == undefined ? _v.error_msg : _v.errMsg),
            success: function (res) {
            }
        })
    }
}

4、下载百度人脸识别

1)人脸识别技术文档

http://ai.baidu.com/docs#/Face-Detect-V3/top\
https://cloud.baidu.com/doc/FACE/Face-Csharp-SDK.html#.E4.BA.BA.E8.84.B8.E6.A3.80.E6.B5.8B\

2)百度云 - 接口需要进入这里创建

https://console.bce.baidu.com

5、C# MVC 调用人脸识别源码(api调用暂时未实现)

#region 接收Base64编码格式的图片
[HttpPost]
public JsonResult Upload()
{
    string _fileAllPath = "";
    HttpPostedFileBase flogo = Request.Files["file"];
    if (flogo.ContentLength != 0) {
        string name = flogo.FileName; //获取后缀名
        string namejpg = Path.GetExtension(name).ToLower();
        string path = Server.MapPath("../upload/"); //获取上传的路径
        string gid = System.Guid.NewGuid().ToString(); //生成一个新的文件名
        string newname = gid + namejpg; //上传
        _fileAllPath = path + newname;
        flogo.SaveAs(_fileAllPath);
    }
    
    JObject _result= DetectDemo(_fileAllPath); //人脸识别验证
    return Json(_result.ToString());
}

#endregion

public JObject DetectDemo(string _imgpath)
{
    // 设置APPID/AK/SK
    //var APP_ID = "11116994";
    var API_KEY = "百度云申请得到的KEY";
    var SECRET_KEY = "百度云申请得到的KEY";
    var client = new Baidu.Aip.Face.Face(API_KEY, SECRET_KEY);

    client.Timeout = 60000; // 修改超时时间

    var image = _imgpath;
    image = ImgToBase64String(_imgpath);

    var imageType = "URL"; //需要公网可访问的图片

    imageType = "BASE64";

    // 调用人脸检测,可能会抛出网络等异常,请使用try/catch捕获
    var result = client.Detect(image, imageType);
    Console.WriteLine(result);
    // 如果有可选参数 {"face_field", "age","beauty","expression","face_type","glasses","gender"},
    var options = new Dictionary < string, object>{
    {"face_field", "beauty" },
    { "max_face_num", 2 },
    { "face_type", "LIVE" },
    };

    // 带参数调用人脸检测
    result = client.Detect(image, imageType, options);
    return result;
}

 

//imgage图片转base64字符
protected string ImgToBase64String(string Imagefilename)
{
    try {
        Bitmap bmp = new Bitmap(Imagefilename);
        MemoryStream ms = new MemoryStream();
        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        byte[] arr = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(arr, 0, (int)ms.Length);
        ms.Close();
        return Convert.ToBase64String(arr);
    }
    catch (Exception ex) {
        return null;
    }
}

6、小程序本地开发调试和手机预览,建议进行如下操作

1)微信开发者工具-点击详情-在项目设置:勾选上-不校验安全域名

2)手机预览,需要打开调试模式才能请求到IP地址

3)如果以上两者都无法访问,需要检查ip设置是否正确,以及IP服务器是否被防火墙屏蔽了

相关文章
|
12天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
29 11
|
14天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
41 10
|
3月前
|
测试技术 C# 数据库
C# 单元测试框架 NUnit 一分钟浅谈
【10月更文挑战第17天】单元测试是软件开发中重要的质量保证手段,NUnit 是一个广泛使用的 .NET 单元测试框架。本文从基础到进阶介绍了 NUnit 的使用方法,包括安装、基本用法、参数化测试、异步测试等,并探讨了常见问题和易错点,旨在帮助开发者有效利用单元测试提高代码质量和开发效率。
185 64
|
1月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
105 13
|
5月前
|
测试技术 API C#
C#使用Bogus生成测试数据
C#使用Bogus生成测试数据
64 1
|
2月前
|
缓存 监控 数据挖掘
C# 一分钟浅谈:性能测试与压力测试
【10月更文挑战第20天】本文介绍了性能测试和压力测试的基础概念、目的、方法及常见问题与解决策略。性能测试关注系统在正常条件下的响应时间和资源利用率,而压力测试则在超出正常条件的情况下测试系统的极限和潜在瓶颈。文章通过具体的C#代码示例,详细探讨了忽视预热阶段、不合理测试数据和缺乏详细监控等常见问题及其解决方案,并提供了如何避免这些问题的建议。
67 7
|
2月前
|
Kubernetes 测试技术 持续交付
C# 一分钟浅谈:集成测试与系统测试
【10月更文挑战第19天】本文详细介绍了集成测试和系统测试的概念、目的及其在软件开发中的重要性。通过分析常见问题和易错点,结合代码示例,探讨了如何通过代码规范、自动化测试和持续集成等方法提高测试效果,确保软件质量和可靠性。
138 1
|
3月前
|
测试技术 C# 数据库
C# 一分钟浅谈:测试驱动开发 (TDD) 实践
【10月更文挑战第18天】测试驱动开发(TDD)是一种软件开发方法论,强调先编写测试代码再编写功能代码,以确保代码质量和可维护性。本文从 TDD 的基本概念入手,详细介绍了其核心步骤——编写测试、运行测试并失败、编写代码使测试通过,以及“红绿重构”循环。文章还探讨了 TDD 的优势,包括提高代码质量、促进设计思考、减少调试时间和文档化。此外,文中分析了常见问题及解决方案,如测试覆盖率不足、测试代码过于复杂、忽视重构和测试依赖过多,并通过一个简单的计算器类的代码案例,展示了 TDD 的实际应用过程。
52 1
|
3月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
1400 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
4月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
118 12