直接上代码

服务端代码如下

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. Proto3:C++ API概览

    包名 说明 google::protobuf Protocol Buffer运行时库核心组件. google::protobuf::io I/O操作辅助类. google::protobuf::uti ...

  2. vmware增加新硬盘无需重启生效

    echo "scsi add-single-device 2 0 2 0" > /proc/scsi/scsi # echo "scsi add-single-de ...

  3. 5G时代,什么将会消失?

    ​​5G时代说着说着就来了,当然,它不可能一撮而就,但正如4G.移动互联网和WIFI这些东西基本上是日益精进的水平,现如今饭馆的生意是否火爆,不仅仅在于其菜品和服务的质量,更在于他们有没有WIFI以及 ...

  4. Spring Boot 2.x基础教程:使用 Thymeleaf开发Web页面

    通过本系列教程的前几章内容(API开发.数据访问).我们已经具备完成一个涵盖数据存储.提供HTTP接口的完整后端服务了.依托这些技能,我们已经可以配合前端开发人员,一起来完成一些前后端分离的Web项目 ...

  5. 得亏了它,我才把潜藏那么深的Bug挖出来

    2020年写了很多事故解决的文章,并不是我绞尽脑汁想出来的,而是真的遇到了这些问题.通过文章的方式记录下来,分享出去,才有意义. 事故背景 首先看下面的图吧,这是我从cat上截的图. 可以看到是一个R ...

  6. LeetCode 题解 | 面试题 10.01. 合并排序的数组

    给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m 和 n. 示例: 输入: A = [ ...

  7. 从0开发3D引擎(十二):使用领域驱动设计,从最小3D程序中提炼引擎(第三部分)

    目录 上一篇博文 继续实现 实现"DirectorJsAPI.init" 实现"保存WebGL上下文"限界上下文 实现"初始化所有Shader&quo ...

  8. Django+Nginx+Uwsgi环境配置

    nginx.conf : server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.acces ...

  9. idea 报Сannot Run Git runnerw.exe: AttachConsole failed with error 6

    报错:Сannot Run Git runnerw.exe: AttachConsole failed with error 6 解决方案:指向Git 的git.exe文件所在的安装目录,配置上就可以 ...

  10. Qt_QChart的使用记录(小白)

    主要是记录柱状图的数值显示,散点图的点坐标显示(防止后续忘记,把文件都贴出来,方便复查) 资源库: WarehouseInputOrOutput.pro QT += core gui QT += ch ...