Python操作 调用yolov8n-pose

环境准备

复制代码
pip install -U ultralytics

图片位置

放在项目根目录下面

样例代码

python 复制代码
# 1. 导入必备工具(只留最核心的,无多余代码)
from ultralytics import YOLO  # YOLO检测专用

# 2. 加载人体关键点模型(书包绝对检测不出关键点)
model = YOLO('yolov8n-pose.pt')

# 3. 你的图片路径(根目录图片,直接写文件名)
source = r'test_picture_5.jpg'

# 4. 模型检测(完全保留你的 conf=0.5,坚决不动!)
results = model.predict(
    source=source,
    conf=0.5,        # 你的要求:0.5阈值
    classes=0,       # 只检测人
    show=False,      # 过滤完再显示
    save=False       # 过滤完再保存
)

# 5. 核心过滤:100%剔除书包(极简逻辑,绝无例外)
for result in results:
    boxes = result.boxes       # 所有检测框(真人/误检书包)
    keypoints = result.keypoints # 所有关键点
    valid_boxes = []           # 只存真人框

    # 逐个判断每个框:是真人?还是书包?
    for i in range(len(boxes)):
        # 取出当前框的 17个关键点置信度(0=无,1=百分百)
        kp_conf = keypoints[i].conf[0]
        
        # 🔥 调试打印:亲眼看到数值(书包=全0,真人=全大于0)
        print(f"第{i+1}个框的关键点置信度:{kp_conf}")
        # 计算置信度总和(书包总和=0,真人总和=很大)
        total_conf = kp_conf.sum().item()
        print(f"第{i+1}个框的置信度总和:{total_conf}")

        # ✅ 终极规则:总和=0 → 绝对是书包(直接剔除);总和>0 → 真人(保留)
        if total_conf > 0:
            valid_boxes.append(boxes[i])
            print("→ 这个框是:真人 ✅")
        else:
            print("→ 这个框是:书包 ❌(已剔除)")

    # 替换成纯真人框
    result.boxes = valid_boxes

# 6. 显示+保存最终结果
for result in results:
    result.show()
    result.save()

# 7. 最终输出(只有书包的话,这里一定是0)
for r in results:
    print(f"\n🎯 最终检测到的真实人数:{len(r.boxes)}")

classes的可选的值:

0: person(人)
1: bicycle(自行车)
2: car(小汽车)
3: motorcycle(摩托车)
4: airplane(飞机)
5: bus(公交车)
6: train(火车)
7: truck(卡车)
8: boat(船)
9: traffic light(交通灯)
10: fire hydrant(消防栓)
11: stop sign(停车标志)
12: parking meter(停车计时器)
13: bench(长椅)
14: bird(鸟)
15: cat(猫)
16: dog(狗)
17: horse(马)
18: sheep(羊)
19: cow(牛)
20: elephant(大象)
21: bear(熊)
22: zebra(斑马)
23: giraffe(长颈鹿)
24: backpack(背包)
25: umbrella(雨伞)
26: handbag(手提包)
27: tie(领带)
28: suitcase(行李箱)
29: frisbee(飞盘)
30: skis(滑雪板)
31: snowboard(滑雪板)
32: sports ball(运动球)
33: kite(风筝)
34: baseball bat(棒球棒)
35: baseball glove(棒球手套)
36: skateboard(滑板)
37: surfboard(冲浪板)
38: tennis racket(网球拍)
39: bottle(瓶子)
40: wine glass(红酒杯)
41: cup(杯子)
42: fork(叉子)
43: knife(刀)
44: spoon(勺子)
45: bowl(碗)
46: banana(香蕉)
47: apple(苹果)
48: sandwich(三明治)
49: orange(橙子)
50: broccoli(西兰花)
51: carrot(胡萝卜)
52: hot dog(热狗)
53: pizza(披萨)
54: donut(甜甜圈)
55: cake(蛋糕)
56: chair(椅子)
57: couch(沙发)
58: potted plant(盆栽)
59: bed(床)
60: dining table(餐桌)
61: toilet(马桶)
62: tv(电视)
63: laptop(笔记本电脑)
64: mouse(鼠标)
65: remote(遥控器)
66: keyboard(键盘)
67: cell phone(手机)
68: microwave(微波炉)
69: oven(烤箱)
70: toaster(烤面包机)
71: sink(水槽)
72: refrigerator(冰箱)
73: book(书)
74: clock(时钟)
75: vase(花瓶)
76: scissors(剪刀)
77: teddy bear(泰迪熊)
78: hair drier(吹风机)
79: toothbrush(牙刷)

17个人体关键点

索引 英文名称 中文名称
0 nose 鼻子
1 left_eye 左眼
2 right_eye 右眼
3 left_ear 左耳
4 right_ear 右耳
5 left_shoulder 左肩
6 right_shoulder 右肩
7 left_elbow 左肘
8 right_elbow 右肘
9 left_wrist 左手腕
10 right_wrist 右手腕
11 left_hip 左胯
12 right_hip 右胯
13 left_knee 左膝
14 right_knee 右膝
15 left_ankle 左脚踝
16 right_ankle 右脚踝
相关推荐
叼烟扛炮13 分钟前
C++ 知识点17 友元
开发语言·c++·算法·友员
计算机安禾21 分钟前
【c++面向对象编程】第2篇:类与对象(一):定义第一个类——成员变量与成员函数
开发语言·c++
Dxy123931021622 分钟前
Python Pillow库:`img.format`与`img.mode`的区别详解
开发语言·python·pillow
亿牛云爬虫专家24 分钟前
深度解析:数据采集场景下的 Java 代理技术实战
java·开发语言·数据采集·动态ip·动态代理·代理配置·连接池复用
小小仙。30 分钟前
IT自学第四十二天
java·开发语言
兩尛1 小时前
c++知识点5
开发语言·c++
澈2071 小时前
C++内存管理:new/delete与内存泄漏实战
开发语言·c++·内存分区
༒࿈南林࿈༒1 小时前
刺猬猫小说下载
python·js逆向
其实防守也摸鱼1 小时前
VS code怎么使用 Conda 安装预编译包
开发语言·网络·c++·vscode·安全·web安全·conda
.柒宇.1 小时前
AI-Agent入门实战-AI私厨
人工智能·python·langchain·agent·fastapi