一、准备食物图片(橘子和苹果)

二、识别学习关键代码编写
public static void study() throws Exception {//学习
Picture picture = new Picture();//图片解析类 图片(文件)-三通道矩阵
Config config = new Config();//现有的环境业务进行参数配置
config.setTypeNub(2);//设置类别数量
config.setBoxSize(125);//设置物体大小 单位像素 125*125 矩形
config.setPictureNumber(5);//设置每个种类训练图片数量
config.setPth(0.55);//设置可信概率,只有超过可信概率阈值,得出的结果才是可信的0-1
config.setShowLog(true);//输出学习时打印数据
Distinguish distinguish = new Distinguish(config);//识别类
distinguish.setBackGround(picture.getThreeMatrix("F:\\demo\\AI\\test\\image\\back.jpg"));//塞入背景图片
List<FoodPicture> foodPictures = new ArrayList<>();//所有识别物体的标注集合
for (int i = 1; i < 3; i++) {//加载图片全过程
FoodPicture foodPicture = new FoodPicture();
foodPictures.add(foodPicture);
List<PicturePosition> picturePositionList = new ArrayList<>();
foodPicture.setId(i + 1);//该图片类别
foodPicture.setPicturePositionList(picturePositionList);
for (int j = 1; j < 6; j++) {
String name;
if (i == 1) {
name = "a";
} else {
name = "b";
}
PicturePosition picturePosition = new PicturePosition();
picturePosition.setUrl("F:\\demo\\AI\\test\\image\\" + name + i + ".jpg");
picturePosition.setNeedCut(false);//是否需要剪切,充满全图不需要
picturePositionList.add(picturePosition);
}
}
distinguish.studyImage(foodPictures);//进行学习 耗时较长、、、、
Model model = distinguish.getModel();
System.out.println(JSON.toJSONString(model));
//识别过程
for (int i = 1; i < 8; i++) {
System.out.println("i====" + i);
ThreeChannelMatrix t = picture.getThreeMatrix("F:\\demo\\AI\\test\\image\\t" + i + ".jpg");
Map<Integer, Double> map = distinguish.distinguish(t);
for (Map.Entry<Integer, Double> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
三、识别流程说明
配置识别器------添加食物图片获取模型数据------通过模型数据识别图片食物
四、测试成果展示
