【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服务器是否被防火墙屏蔽了

相关文章
|
18天前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
66 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
3天前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
14 2
|
18天前
|
敏捷开发 测试技术
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
文章详细介绍了软件开发过程中的不同开发模型(瀑布、螺旋、Scrum)和测试模型(V模型、W模型),以及增量和迭代的概念,最后阐述了敏捷思想及其在敏捷开发(如Scrum)中的应用。
31 0
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
|
1月前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
62 1
|
1月前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
|
2月前
|
测试技术 C# 开发者
“代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
55 0
|
2月前
|
前端开发 JavaScript 测试技术
React 与前端自动化测试也太重要啦!各种测试框架助力确保应用质量,快来开启优质开发之旅!
【8月更文挑战第31天】随着前端技术的发展,React 成为了构建用户界面的热门选择。然而,随着应用复杂性的增加,确保应用质量变得至关重要。本文介绍了前端自动化测试的重要性,并详细综述了常用的测试框架如 Jest、Enzyme 和 Cypress,以及如何通过它们进行高效的 React 组件测试。通过遵循最佳实践,如编写可维护的测试用例、覆盖关键场景、集成 CI/CD 流程和进行性能测试,可以显著提高应用的稳定性和可靠性。
48 0
|
5月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
178 3
|
5月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
189 3
|
9天前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。