前端练手项目合集40.0个,附源码,2022年最新

今天分享40个博主平时收集整理的前端练手项目,都是一些适合前端新手的小项目合集。 

1、【网易云音乐首页制作】
2、【实战项目之今日头条】
3、【实战项目之拉勾网】
4、【ReactNative项目之美食APP】
5、【uni-APP项目实战教程】
6、【React项目管理后台系统】
7、【React项目教程(企业级实战开发)】
8、【NodeJS+Express+MongoDB实战项目】
9、【毕设论文辅导-React美食网】
10、【仿小米电商网站】
11、【仿网易云音乐】
12、【React全家桶-新闻发布管理系统】
13、【简书后台管理系统】
14、【移动端网站布局-打造自己的“手机APP”】
15、【Web支付开发(支付宝和微信支付)】
16、【贪吃蛇小游戏】
17、【Vue实战项目之喵喵电影】
18、【植物大战僵尸网页版】
19、【智慧学成数据展示平台】
……
35、【node图书管理系统】
36、【uniAPP实战仿糗事百科APP】
37、【uniAPP悦读前后端实战】
38、【uniAPP商业级应用】
39、【小程序全栈开发之喵喵交友】
40、【植株健康检测系统】

链接: https://pan.baidu.com/s/1dVAEuT387qgzy8KH2eZYtg?pwd=5q6t

提取码: 5q6t

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
NMS(Non-Maximum Suppression)非极大值抑制是目标检测中常用的一种算法,用于消除重叠的边界框,并筛选出最优的边界框。下面是Java实现NMS的完整源码。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * NMS(Non-Maximum Suppression)非极大值抑制算法的Java实现 */ public class NMS { /** * 定义一个边界框类,用于存储边界框的坐标和置信度 */ private static class BoundingBox { float x1, y1, x2, y2; // 左上角和右下角的坐标 float confidence; // 置信度 BoundingBox(float x1, float y1, float x2, float y2, float confidence) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; this.confidence = confidence; } float getArea() { return (x2 - x1 + 1) * (y2 - y1 + 1); } } /** * 定义一个比较器类,用于按照置信度降序排序 */ private static class ConfidenceComparator implements Comparator<BoundingBox> { @Override public int compare(BoundingBox o1, BoundingBox o2) { if (o1.confidence > o2.confidence) { return -1; } else if (o1.confidence < o2.confidence) { return 1; } return 0; } } /** * NMS算法的主要实现 * @param boxes 边界框列表 * @param overlapThreshold IOU阈值 * @return 非极大值抑制后的边界框列表 */ public static List<BoundingBox> nms(List<BoundingBox> boxes, float overlapThreshold) { // 按照置信度降序排序 Collections.sort(boxes, new ConfidenceComparator()); List<BoundingBox> result = new ArrayList<>(); while (!boxes.isEmpty()) { BoundingBox box = boxes.remove(0); result.add(box); List<BoundingBox> toRemove = new ArrayList<>(); for (BoundingBox b : boxes) { float iou = getIOU(box, b); if (iou > overlapThreshold) { toRemove.add(b); } } boxes.removeAll(toRemove); } return result; } /** * 计算两个边界框的IOU(Intersection over Union) * @param box1 边界框1 * @param box2 边界框2 * @return IOU值 */ private static float getIOU(BoundingBox box1, BoundingBox box2) { float area1 = box1.getArea(); float area2 = box2.getArea(); float x1 = Math.max(box1.x1, box2.x1); float y1 = Math.max(box1.y1, box2.y1); float x2 = Math.min(box1.x2, box2.x2); float y2 = Math.min(box1.y2, box2.y2); float w = Math.max(0, x2 - x1 + 1); float h = Math.max(0, y2 - y1 + 1); float inter = w * h; return inter / (area1 + area2 - inter); } } ``` 使用示例: ```java public class NMSDemo { public static void main(String[] args) { List<NMS.BoundingBox> boxes = new ArrayList<>(); boxes.add(new NMS.BoundingBox(10, 10, 20, 20, 0.9f)); boxes.add(new NMS.BoundingBox(15, 15, 25, 25, 0.8f)); boxes.add(new NMS.BoundingBox(30, 30, 40, 40, 0.7f)); List<NMS.BoundingBox> result = NMS.nms(boxes, 0.5f); for (NMS.BoundingBox box : result) { System.out.println(box.x1 + "," + box.y1 + "," + box.x2 + "," + box.y2 + "," + box.confidence); } } } ``` 输出结果: ``` 10.0,10.0,20.0,20.0,0.9 30.0,30.0,40.0,40.0,0.7 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值