【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天前
|
前端开发 JavaScript 安全
C#一分钟浅谈:Blazor WebAssembly 开发
Blazor WebAssembly 是一个客户端框架,允许开发者使用C#和Razor语法构建Web应用。本文介绍了Blazor WebAssembly的基本概念、常见问题及解决方案,包括路由配置、数据绑定、异步操作、状态管理和性能优化等方面的内容,并分享了一些易错点及如何避免的方法。希望这些内容能帮助你在Blazor WebAssembly开发中少走弯路,提高开发效率。
88 51
|
16天前
|
开发框架 缓存 .NET
C# 一分钟浅谈:Blazor Server 端开发
Blazor Server 是基于 ASP.NET Core 的框架,允许使用 C# 和 Razor 语法构建交互式 Web 应用。本文介绍 Blazor Server 的基本概念、快速入门、常见问题及解决方案,帮助开发者快速上手。涵盖创建应用、基本组件、数据绑定、状态管理、跨组件通信、错误处理和性能优化等内容。
29 1
|
17天前
|
缓存 C# 开发者
C# 一分钟浅谈:Blazor Server 端开发
本文介绍了 Blazor Server,一种基于 .NET 的 Web 开发模型,允许使用 C# 和 Razor 语法构建交互式 Web 应用。文章从基础概念、创建应用、常见问题及解决方案、易错点及避免方法等方面详细讲解,帮助开发者快速上手并提高开发效率。
40 2
|
26天前
|
测试技术 Go C#
C#一分钟浅谈:ReSharper 插件增强开发效率
【10月更文挑战第25天】ReSharper 是 JetBrains 开发的一款 Visual Studio 插件,旨在提高 .NET 开发者的生产力。它通过代码分析、重构、导航等功能,帮助开发者避免常见错误,提升代码质量和开发效率。本文将通过具体代码案例,详细介绍 ReSharper 的常见功能及其应用。
38 1
|
1月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
37 1
|
2月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
6月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
4842 2
|
7月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
203 0
|
7月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
109 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用