计算机人工智能毕设项目推荐——基于微信小程序的图片识别的菜品销售系统(图像识别算法+协同过滤推荐算法+Java+Springboot+Vue+Mysql)
·
基于微信小程序的图片识别的菜品销售系统
前言介绍
基于微信小程序的图片识别的菜品销售系统是一个基于微信小程序的菜品销售平台,利用深度学习计算机视觉算法实现图片识别功能,用户可通过图片快速识别菜品名称。集成协同过滤推荐算法,根据用户收藏行为采用余弦相似度计算根据基于用户的协同过滤算法生成个性化推荐,提升用户体验。系统采用Spring Boot和Vue.js等技术开发,支持ECharts可视化图表展示数据,实现高效交互与数据分析。
01开发环境
1.1 Java 技术
1.2 Spring Boot 框架
1.3 MySQL数据库
1.4 B/S 结构
1.5、微信开发者工具
1.6、HBuilder X
1.7、Vue.js 技术
1.8、Uniapp
1.9 深度学习计算机视觉算法图像识别
1.10 协同过滤推荐算法
02系统功能模块
亮点:(深度学习计算机视觉算法图像识别,协同过滤推荐算法,ECharts可视化图表展示)
具体运用基于用户的协同过滤方法,借助解析用户收藏行为数据,辨别出和目标用户有着相似兴趣偏好的用户群体,再依照这些相似用户的历史记录为目标用户生成个性化的音乐推荐列表。
协同过滤算法的核心机制是依靠量化用户之间的相似性程度达成个性化推荐,在这个过程中,余弦相似度作为经典的相似性度量办法,在该领域得到了广泛运用。
余弦相似度计算公式:
03图片展示













04关键代码展示




/**
*
* 菜品识别(交流学习+vx:S20231025S )
*/
@RequestMapping("/baidu/dish")
@IgnoreAuth
public R baiduPlant(@RequestParam("fileName") String fileName,HttpServletRequest request) {
JSONObject jb = null;
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = new File(upload.getAbsolutePath()+"/"+fileName);
if(file.exists()){
jb = BaiduUtil.dishDetect(file.getAbsolutePath());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return R.ok().put("data", com.alibaba.fastjson.JSONObject.parseObject(jb.getJSONArray("result").get(0).toString()));
}
/**
* 协同算法(基于用户的协同算法)
*/
@RequestMapping("/autoSort2")
public R autoSort2(@RequestParam Map<String, Object> params,CaipinxinxiEntity caipinxinxi, HttpServletRequest request){
String userId = request.getSession().getAttribute("userId").toString();
Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());
// 查询订单数据
List<OrdersEntity> orders = ordersService.selectList(new EntityWrapper<OrdersEntity>());
Map<String, Map<String, Double>> ratings = new HashMap<>();
if(orders!=null && orders.size()>0) {
for(OrdersEntity o : orders) {
Map<String, Double> userRatings = null;
if(ratings.containsKey(o.getUserid().toString())) {
userRatings = ratings.get(o.getUserid().toString());
} else {
userRatings.put(o.getGoodid().toString(), 1.0);
}
}
}
// 创建协同过滤对象
UserBasedCollaborativeFiltering filter = new UserBasedCollaborativeFiltering(ratings);
// 为指定用户推荐物品
String targetUser = userId;
int numRecommendations = limit;
List<String> recommendations = filter.recommendItems(targetUser, numRecommendations);
// 输出推荐结果
System.out.println("Recommendations for " + targetUser + ":");
for (String item : recommendations) {
System.out.println(item);
}
EntityWrapper<CaipinxinxiEntity> ew = new EntityWrapper<CaipinxinxiEntity>();
ew.in("id", recommendations);
ew.eq("onshelves","1");
if(recommendations!=null && recommendations.size()>0 && recommendations.size()>0) {
ew.last("order by FIELD(id, "+String.join(",", recommendations)+")");
}
更多推荐
所有评论(0)