微信开发+百度AI学习:植物识别

直接上代码

服务端代码如下

private static readonly Baidu.Aip.ImageClassify.ImageClassify client = new Baidu.Aip.ImageClassify.ImageClassify(ApiConfig.APIKey, ApiConfig.SecretKey);
/// <summary>
/// 植物识别
/// </summary>
/// <param name="filesrc"></param>
public PlantModel PlantDetect(string filesrc)
{
    var image = File.ReadAllBytes(filesrc);
    var result = client.PlantDetect(image);
    return GetPlant(result);
}
/// <summary>
/// 植物识别
/// </summary>
/// <param name="serverId"></param>
/// <returns></returns>
public JsonResult PlantDetect(string serverId = "")
{
    string filename = System.Web.HttpContext.Current.Server.MapPath("/Static/img/demoplant.jpg");
    if (!string.IsNullOrWhiteSpace(serverId))
    {
        filename = GetFileName(serverId);
    }
    var data = imageClassify.PlantDetect(filename);
    return Json(data, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// 下载微信图片
/// </summary>
/// <param name="serverId">微信返回的图片的服务器端ID</param>
/// <returns></returns>
private string GetFileName(string serverId)
{
    string filename = System.Web.HttpContext.Current.Server.MapPath("/upload/img/");
    if (!System.IO.Directory.Exists(filename))
        System.IO.Directory.CreateDirectory(filename);

    string date = DateTime.Now.ToString("yyyy-MM-dd");
    filename += date + "/";

    if (!System.IO.Directory.Exists(filename))
        System.IO.Directory.CreateDirectory(filename);

    string guid = Guid.NewGuid().ToString();
    filename += $"/{guid}.jpg";

    WeixinUtility.GetVoice(serverId, filename);
    return filename;
}

前端代码如下


@{
    if (ViewData["type"].ToString() == "1")
    {
        ViewBag.Title = "植物识别";
    }else if (ViewData["type"].ToString() == "2")
    {
        ViewBag.Title = "动物识别";
    }
    else if (ViewData["type"].ToString() == "3")
    {
        ViewBag.Title = "车型识别";
    }
    Layout = "~/Views/Shared/_LayoutWeUI.cshtml";
}

<div class="page js_show" id="app" v-cloak>
    <div class="page__bd">
        <div class="weui-cells weui-cells_form">
            <div class="weui-cell">
                <div class="weui-cell__bd">
                    <img v-if="localId.length>0" :src="localId" style="max-width:300px;max-height:300px;" />
                    <img v-else :src="imgsrc" style="max-width:300px;max-height:300px;" />
                </div>
            </div>
        </div>
        <div class="weui-cells__title">识别结果</div>
        <div class="weui-cells">
            <div class="weui-cell">
                <div class="weui-cell__bd">
                    <p>名称</p>
                </div>
                <div class="weui-cell__ft">置信度</div>
            </div>
            <div class="weui-cell" v-for="(k,index) in result">
                <div class="weui-cell__bd">
                    <p>{{k.name}}</p>
                </div>
                <div class="weui-cell__ft">{{getscore(k.score)}}</div>
            </div>
        </div>
        <div style="margin-bottom:60px;"></div>
        <div style="display: flex;position: fixed;z-index: 500;bottom: 0px;width: 100%;margin: 5px 0px;">
            <a class="weui-btn weui-btn_primary" href="javascript:" @@click="uploader">上传{{title}}图片</a>
        </div>
    </div>
</div>
@section PageJS{
    <script type="text/javascript">
        var app = new Vue({
            el: "#app",
            data: {
                imgsrc: "",
                localId: "",
                serverId: "",
                flag: 1,
                recorder: null,
                title: "",
                url: "",
                result:[]
            },
            mounted: function () {
                var that = this;
                var type [email protected]["type"];
                if (type == 1) {
                    this.title = "植物";
                    this.imgsrc = "/Static/img/demoplant.jpg";
                    this.url = '@Url.Action("PlantDetect", "ImageRecognition")';
                }
                else if (type == 2) {
                    this.title = "动物";
                    this.imgsrc = "/Static/img/demoanimal.jpg";
                    this.url = '@Url.Action("AnimalDetect", "ImageRecognition")';
                }
                else if (type == 3) {
                    this.title = "车型";
                    this.imgsrc = "/Static/img/democar.jpg";
                    this.url = '@Url.Action("CarDetect", "ImageRecognition")';
                }
                this.detect();
            },
            methods: {
                detect() {
                    var that = this;
                    $.sunloading.show("正在识别");
                    $.ajax({
                        url: this.url,
                        dataType: "json",
                        type: "post",
                        data: { serverId: this.serverId },
                        success: function (result) {
                            $.sunloading.close();
                            console.log("识别结果:" + result);
                            that.result = result.result;
                        },
                        error: function (e) {
                            console.log(e);
                        }
                    });
                },
                getscore(score) {
                    return (score * 100).toFixed(2) + "%";
                },
                uploader() {
                    var that = this;
                    wx.chooseImage({
                        count: 1, // 默认9
                        sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
                        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
                        success: function (res) {
                            console.log(res.localIds);
                            that.localId = res.localIds[0]; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                            that.uploadImage();
                        }
                    });
                },
                uploadImage() {
                    var that = this;
                    wx.uploadImage({
                        localId: that.localId, // 需要上传的图片的本地ID,由chooseImage接口获得
                        isShowProgressTips: 1, // 默认为1,显示进度提示
                        success: function (res) {
                            that.serverId = res.serverId; // 返回图片的服务器端ID
                            that.detect();
                        }
                    });
                }
            }
        });
    </script>
}

运行效果如下

Git源码查看请移步https://github.com/yliml/BaiduAI/wiki

原文地址:https://www.cnblogs.com/ylizml/p/9053095.html

时间: 2024-08-30 09:03:44

微信开发+百度AI学习:植物识别的相关文章

c# 利用AForge和百度AI开发实时人脸识别

baiduAIFaceIdentify项目是C#语言,集成百度AI的SDK利用AForge开发的实时人脸识别的小demo,里边包含了人脸检测识别,人脸注册,人脸登录等功能 人脸实时检测识别功能 思路是利用AForge打开摄像头,通过摄像头获取到的图像显示在winform窗体中AForge的控件中,利用AForge控件中的NewFrame事件获取要显示的每一帧的图像,获取图像传输到百度AI平台进行人脸检测,并且将检测结果反馈到界面显示的图像中.在这个过程中有两个问题,获取图像上传到百度AI平台进行

基于百度AI开放平台的人脸识别及语音合成

基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜值等信息,将信息返回到Web界面进行显示. (2)人脸比对 在Web界面上传两张人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口比对照片信息,返回相似度. (3)语音识别 在Web页面上传语音文件,判断语音文件格式,如果不是wav格式进行转码处理,然后调用平台接口进行识别,

《C#微信开发系列(Top)-微信开发完整学习路线》

因为年后回来这段时间学校还有公司那边有很多事情需要兼顾,所以没能及时更新文章.今天比较有时间,年前那会答应说要将微信开发的完整学习路线整理给到大家,话不多说,上图,希望对大家有所帮助哈.

百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统

这段时间在研究一些人工智能的产品,对比了国内几家做人工智能在线客服的,有些接口是要收费的,有些是免费的,但是做了很多限制,比如每天调用的接口次数限制是100次.后来就找到了百度的AI,大家也知道,目前国内做AI的,应该就算百度比较超前了. 于是就开始研究吧. 百度AI的网址http://ai.baidu.com/    然后就看百度的UNIT的文档    地址参见 https://ai.baidu.com/docs#/UNIT-v2-download/top UNIT机器人对话API文档.里面的

关于微信网页/H5游戏开发中二维码无法识别的解决方法

我接触微信H5开发已经有一年多了,做过很多案例也遇到很多的问题.今天我把困扰我半年之久的问题分享出来,也就是关于微信网页/H5游戏开发中二维码无法识别的解决方法. 我在百度搜索了许久,关于微信H5网页/游戏开发问题以及解决方案的相关文章少之又少,在相关前端交流群中问别人,一问三不知,平时这些群就会上班吹牛逼,真正交流问题的人少又少,真是揪心啊,最后还是得靠自己解决了. [这里,我先举个栗子] 上面这个页面,相信从事微信H5开发的人应该很熟悉,就是常见的分享到朋友圈的页面,通常以[引导分享图标]+

java通过百度AI开发平台提取身份证图片中的文字信息

废话不多说,直接上代码... IdCardDemo.java 1 package com.wulss.baidubce; 2 3 import java.io.BufferedReader; 4 import java.io.InputStreamReader; 5 import java.net.HttpURLConnection; 6 import java.net.URL; 7 import java.net.URLEncoder; 8 import java.util.Map; 9 10

利用百度AI快速开发出一款“问答机器人”并接入小程序

先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之前的帖子:<UNIT搭建机器人助理> https://ai.baidu.com/forum/topic/show/953021 想了解微信小程序的开发过程,请参看我之前的帖子:<UNIT接入小程序>https://ai.baidu.com/forum/topic/show/953022

微信开发学习总结(一)—微信开发环境搭建

目前移动App开发领域主要分为以下几种类型: 一.微信开发环境搭建 1.要有一个用来测试的公众号. 2.用来调式代码的开发环境 1.1.注册测试公众号 微信公众号分为服务号.订阅号.企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以. 我们所说的微信公众号开发指的是订阅号和服务号. 关于订阅号和服务号的区别,官方是这样解释的 服务号:主要偏向于服务交互(功能类似12315,114,银行,提供绑定信息,服务交互),每月可群发4条消息:服务号适用人群:媒体.企业.政府或其他组织. 订阅号:

微信开发学习总结(一)微信开发环境搭建

目前移动开发处于比较火的的趋势,很多的开发者都跃跃欲试,目前移动App开发领域主要分为以下几种类型 我在平时的工作中接触得比较多的就是基于Android的Native App开发和基于微信公众号的Light App开发,今天就来带领大家快速进入微信公众号的开发领域. 一.微信开发环境搭建 工欲善其事,必先利其器.要做微信公众号开发,那么要先准备好两样必不可少的东西: 1.要有一个用来测试的公众号. 2.用来调式代码的开发环境. 1.1.注册测试公众号 微信公众号分为服务号.订阅号.企业号,订阅号