You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取YOLOv8中无画线道路车辆计数结果并操作展示?

基于YOLO实现无画线车辆计数并获取计数值方案

1. 核心计数逻辑实现

以YOLOv8为例,通过检测结果统计目标类别数量即可完成无画线计数:

from ultralytics import YOLO

# 加载YOLO预训练模型(可替换为自定义训练权重)
model = YOLO('yolov8n.pt')

# 对目标图片执行推理
results = model('your_image_path.jpg')

# 统计汽车数量(COCO数据集里汽车的类别ID为2)
car_count = 0
for result in results:
    # 提取检测框的类别ID和置信度
    class_ids = result.boxes.cls.cpu().numpy()
    confs = result.boxes.conf.cpu().numpy()
    
    # 过滤置信度≥0.5的汽车检测结果,避免误检
    valid_cars = (class_ids == 2) & (confs >= 0.5)
    car_count += sum(valid_cars)

# 输出计数结果
print(f"检测到汽车数量:{car_count}")

2. 计数值的后续操作与展示

(1)图片可视化标注

直接在原图上叠加计数结果,直观展示:

from PIL import Image, ImageDraw, ImageFont
import os

# 打开原始图片
img = Image.open('your_image_path.jpg')
draw = ImageDraw.Draw(img)

# 设置字体(若无arial.ttf,可替换为系统可用字体路径)
font_path = 'arial.ttf' if os.path.exists('arial.ttf') else None
font = ImageFont.truetype(font_path, 40) if font_path else ImageFont.load_default()

# 在图片左上角绘制计数文本
draw.text((30, 30), f"车辆计数:{car_count}", fill=(255, 0, 0), font=font)

# 保存或展示结果图片
img.save('count_visualized.jpg')
img.show()

(2)其他扩展操作

  • 记录到日志文件:
from datetime import datetime

with open('car_count_log.txt', 'a', encoding='utf-8') as f:
    f.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - 汽车数量:{car_count}\n")
  • 发送至API接口:
import requests

api_url = "your_api_endpoint"
data = {"car_count": car_count, "timestamp": datetime.now().isoformat()}
response = requests.post(api_url, json=data)

3. 关键注意事项

  • 若使用YOLOv5/v6等其他版本,核心逻辑一致,仅检测结果的提取方式略有差异(比如YOLOv5中用results.pandas().xyxy[0]提取检测数据)
  • 若针对特定场景(如封闭园区、特定车型),建议使用自定义标注数据微调YOLO模型,提升检测精度和计数准确性
  • 视频流场景下,只需将单帧图片推理改为逐帧循环处理,每帧输出计数即可

内容的提问来源于stack exchange,提问作者BALO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:33:34