超简洁YOLO8n快速上手人员检测

基于Python 的cv2和ultraytics库,直接调用yolov8n.ptyolov8n.ptUltralytics YOLOv8 目标检测系列中最小、最轻量的官方预训练模型)

1、安装依赖

复制代码
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python

2、加载模型

复制代码
from ultralytics import YOLO

# 加载模型(自动下载,只需要这一行)
model = YOLO("yolov8n.pt")

3、开始识别(单张图和监控识别)

复制代码
from ultralytics import YOLO
import cv2

# 1. 加载模型
model = YOLO("yolov8n.pt")

# 2. 识别(只检测人,置信度 0.4)
results = model("你的图片.jpg", classes=[0], conf=0.4)

# 3. 读取图片画框
img = cv2.imread("你的图片.jpg")

for r in results:
    for box in r.boxes:
        x1, y1, x2, y2 = map(int, box.xyxy[0])
        cv2.rectangle(img, (x1, y1), (x2, y2), (0,255,0), 2)
        cv2.putText(img, "PERSON", (x1,y1-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2)

# 保存
cv2.imwrite("result.jpg", img)
  • classes=[0]只检测人
  • conf=0.4置信度 40% 就识别
  • model()AI 推理核心
  • box = 一个人在图片里的 "位置方框"

监控头识别

复制代码
from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.predict(source=0, show=True)  # 0=摄像头

def local_inference(img_path):
    model = YOLO("yolov8n.pt")
    results = model(img_path, classes=[0], conf=0.4)
    
    persons = []
    for r in results:
        for box in r.boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])
            persons.append({
                "Box": {
                    "X": x1,
                    "Y": y1,
                    "Width": x2-x1,
                    "Height": y2-y1
                },
                "label": "person",
                "Score": float(box.conf)
            })
    return {"result": persons}

下面是一段测试的照片识别项目

复制代码
import os
import cv2
from ultralytics import YOLO

# ===================== 你的路径(完全按你要求) =====================
BASE_DIR = r"C:\AI_project\person_detect"
PicPath = os.path.join(BASE_DIR, "pic")          # 原图在这里
DetectPicPath = os.path.join(BASE_DIR, "detect_pic")  # 打框图输出到这里
os.makedirs(DetectPicPath, exist_ok=True)

# ===================== 加载YOLO模型 =====================
model = YOLO("yolov8n.pt")

# ===================== 要检测的图片(你那张图) =====================
img_name = "safe.jpg"  # <--- 改成你图片真实名字!!!
img_path = os.path.join(PicPath, img_name)

# ===================== 开始检测(只检测人) =====================
results = model(img_path, conf=0.2, classes=[0])  # conf=0.2 超低门槛,必检出!

# ===================== 读取图片 + 画框 =====================
img = cv2.imread(img_path)

for r in results:
    for box in r.boxes:
        # 获取坐标
        x1, y1, x2, y2 = map(int, box.xyxy[0])
        # 画绿色框
        cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 3)
        # 写文字
        cv2.putText(img, "PERSON", (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2)
        #cv2.putText(img, "illegal", (x1+10, y1 + 10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

# ===================== 保存到 detect_pic =====================
save_path = os.path.join(DetectPicPath, f"detected_{img_name}")
cv2.imwrite(save_path, img)

print(f"✅ 检测完成!已保存到:{save_path}")
print(f"✅ 一共检测到 {len(results[0].boxes)} 个人!")

在pic目录下保存safe.jpg运行后生成图如下

相关推荐
leisoo80971 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
WangYan20221 小时前
基于XGBoost与AI的生态—地学多源数据建模:植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识别
python·机器学习·xgboost
金銀銅鐵4 小时前
[Python] 借助 turtle 逐字展示唐诗《金缕衣》
python
Python大数据分析@6 小时前
使用大模型MCP采集数据,爬虫已经无门槛
python·网络爬虫
quantdash_cc6 小时前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
65岁退休Coder6 小时前
LangChain v1.3.4 笔记 - 07 补充:链式调用 LCEL
后端·python·langchain
卷无止境6 小时前
FastAPI 部署在 Nginx 后面到底该怎么配
后端·python
半亩码田6 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
Wzx1980127 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
Python私教7 小时前
签名 URL 刷新导致审批失效?别急着删掉所有 query
python·安全