4、调用模型得到模型分析后的结果
1、在之前的项目基础上,添加一个文件夹 ModelService , 这个文件夹里面会放我们调用预测的服务
2、添加一个类 KouzhaoService ,用于我们 调用预测模型(我们在这里叫他口罩预测服务)
3、上核心代码
public class KouzhaoService
{
/// <summary>
/// 获取预测结果
/// </summary>
/// <param path="">需要预测的图片地址</param>
/// <returns></returns>
public string GetPredictionResult(string path)
{
// 创建样例数据的单个实例对模型输入数据集的第一行
ModelInput sampleData = new ModelInput()
{
ImageSource = path,
};
// 获取预测结果
var predictionResult = ConsumeModel.Predict(sampleData);
return predictionResult.Prediction;
}
}
3.1 完整代码:
using KouzhaoML.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace kouzhaowebapi.ModelService
{
public class KouzhaoService
{
/// <summary>
/// 获取预测结果
/// </summary>
/// <param path="">需要预测的图片地址</param>
/// <returns></returns>
public string GetPredictionResult(string path)
{
// 创建样例数据的单个实例对模型输入数据集的第一行
ModelInput sampleData = new ModelInput()
{
ImageSource = path,
};
// 获取预测结果
var predictionResult = ConsumeModel.Predict(sampleData);
return predictionResult.Prediction;
}
}
}
4、返回到我们 webapi 中调用这个预测
核心代码:
new KouzhaoService().GetPredictionResult(图片路径);
完整代码:
using KouzhaoML.Model;
using kouzhaowebapi.ModelService;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace kouzhaowebapi.Controllers
{
[ApiController]
public class DiscernController : ControllerBase
{
/// <summary>
/// 上传文件:口罩验证
/// </summary>
/// <param name="stream"></param>
/// <param name="fileName"></param>
[HttpPost("upload")]
[Route("api/discern/kouzhao")]
public object UploadFile([FromForm] IFormCollection collection)
{
//申明返回的结果
string result = "";
FormFileCollection filelist = (FormFileCollection)collection.Files;
//检查是否有文件提交上来
if (filelist != null && filelist.Any())
{
//我们只做第一个文件的检查
IFormFile file = filelist[0];
//做随机数,用到文件夹名字上,防重名
Random random = new Random();
string r = "";
int i;
for (i = 1; i < 11; i++)
{
r += random.Next(0, 9).ToString();
}
//文件路径
string Tpath = "/file/";
string name = file.FileName;
string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + r;
string FilePath = @"C:\" + Tpath;
//获取文件类型
string type = System.IO.Path.GetExtension(name);
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists)
{
di.Create();
}
//文件保存的路径
var filefullname = FilePath + FileName + type;
using (FileStream fs = System.IO.File.Create(filefullname))
{
// 复制文件
file.CopyTo(fs);
// 清空缓冲区数据
fs.Flush();
fs.Close();
fs.Dispose();
}
//成功提示赋值到返回结果中
result = "文件上传成功";
//调用预测模型,将结果赋值到 result 变量中,该变量会作为结果返回出去
result = new KouzhaoService().GetPredictionResult(filefullname);
}
return result;
}
}
}
5、接下来运行项目,我们使用控制台界面运行项目。按 F5 运行项目后,得到下面的情况,就代表程序启动了
6、使用 Postman 测试上传图片
接下来我们再去放一张戴口罩的照片
到这里就是 调用模型得到模型分析后的结果 的全部内容了,后续会继续出如何接入微信公众号的 过程
欢迎进qq群交流:704028989