直接上代码

服务端代码如下

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 =@ViewData["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

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

  1. 微信开发+百度AI学习:环境搭建

    注册成为百度开发者,百度接入指南http://ai.baidu.com/docs#/Begin/top 选择分类进去创建应用,接口权限全部选择好了,这样就可以只创建一个应用就有全部接口权限. C#开发 ...

  2. 微信开发+百度AI学习:微信网页开发环境搭建

    参考微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 两步即可获取微信网页开发能力 STEP1: ...

  3. selenium自动化 | 借助百度AI开放平台识别验证码登录职教云

    #通过借助百度AI开放平台识别验证码登录职教云 from PIL import Image from aip import AipOcr import unittest # driver.get(zj ...

  4. 利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字

    序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...

  5. 单一功能学习——百度AI之身份证识别

    以下内容基本是从官方接口文档复制过来的,附带自己封装的代码 时间:2018年4月4日 一.导入工具包 使用maven依赖: <dependency> <groupId>com. ...

  6. 基于百度AI实现 车牌识别

    前言 目前百度的AI接口相对完善,对于文字识别类的操作还需要开发者一一去尝试,去评估这效果到底是怎么的. 文字识别的接口相对简单,官方提供的SDK也集成很好,笔者只是在这上面做了一些前期性的功能数据校 ...

  7. 百度AI接口---身份证识别Demo

    题记:自己是做java web的,但是本人以前接触并学习很多图像的知识,所以对图像很敏感.下面以百度的一个接口,实现身份证识别案例 1.需要百度开发者AppID.SecretKey .API Key. ...

  8. 20-调用百度AI的文字识别

    本来准备自己写识别的,貌似现在能力不足,直接偷懒用百度的api吧 from aip import AipOcr """ 你的 APPID AK SK "&quo ...

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

    baiduAIFaceIdentify项目是C#语言,集成百度AI的SDK利用AForge开发的实时人脸识别的小demo,里边包含了人脸检测识别,人脸注册,人脸登录等功能 人脸实时检测识别功能 思路是 ...

随机推荐

  1. box-sizing: border-box

    如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中

  2. SQL JOIN 和 UNION 用法

    1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P ...

  3. 从赴美IPO绝迹 看那些烧成泡沫的互联网企业

    曾经,赴美上市是很多中国企业的终极梦想.然而在当下,随着中概股在美国股市股价的不断走低.中国赴美上市企业私有化速度的加快,大众才发现,原来美国股市并不是那么好混的.但不管怎样,赴美上市始终是一种荣耀. ...

  4. songCMS 3.15 cookie SQLINJ

    ./code/profile.php ... $db = new db(); $SQL = "SELECT * FROM `{$dbprefix}user` WHERE `ID` = {$_ ...

  5. 【转载】Java for循环

    转载只为个人学习,阅读请前往原地址:Java for循环的几种用法详解 本文主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环. ...

  6. Redis(十一):哨兵模式架构设计分析

    业务最初的应用场景中,我们也许使用单机redis就可以应付业务要求,但并非一直可行. 比如单机的读写能力问题,单机的可用性问题,单机的数据安全性问题.这些都是许多互联网应用经常会遇到的问题,也基本上都 ...

  7. 【asp.net core】实现动态 Web API

    序言: 远程工作已经一个月了,最近也算是比较闲,每天早上起床打个卡,快速弄完当天要做的工作之后就快乐摸鱼去了.之前在用 ABP 框架(旧版)的时候就觉得应用服务层写起来真的爽,为什么实现了个 IApp ...

  8. 使用AtomicStampedReference<T>的大坑

    //在初始化的时候会把引用和时间戳存到pair中 AtomicStampedReference<Integer> integerAtomicStampedReference = new A ...

  9. Java反射之数组的反射应用

    上一篇我们说了Java反射之成员方法的反射 这一篇我们说一说数组的反射应用,数组的有长度等属性,所以也会有相应的方法获得这些属性,这里我们不一一列举哪些方法.我们来了解反射包中的一个类----Arra ...

  10. nginx升级不改变配置文件

    查看当前版本是:1.10.3 [root@proxy nginx-1.10.3]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.10.3b ...