当前位置: 首页 > news >正文

【目标检测之Ultralytics预测框颜色修改】

在 Ultralytics YOLOv8 中修改预测框颜色为红色,以下是三种实用方案:


方案 1:直接修改 plot() 方法的 colors 参数

在调用 results.plot() 时直接指定颜色参数:

from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.pt")# 预测并绘制结果
results = model.predict("image.jpg")
plotted_img = results[0].plot(colors=(255, 0, 0))  # BGR格式:红色# 保存或显示
plotted_img.show()  # 直接显示
# plotted_img.save("output.jpg")  # 保存结果

原理
plot() 方法的 colors 参数接受一个 BGR 元组 (B, G, R)(255, 0, 0) 表示红色。


方案 2:自定义调色板覆盖默认颜色

创建全红色的调色板并传递给 plot()

from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.pt")
results = model.predict("image.jpg")# 创建全红色调色板 (每个类别都是红色)
num_classes = len(model.names)  # 获取类别总数
red_palette = [(255, 0, 0)] * num_classes  # 每个类别分配红色# 应用自定义调色板
plotted_img = results[0].plot(colors=red_palette)
plotted_img.show()

原理
YOLOv8 默认使用类别索引映射调色板颜色。此方案为所有类别强制指定红色。


方案 3:修改 Annotator 源码(高级)

直接修改 Ultralytics 的绘图工具类:

  1. 找到文件 ultralytics/utils/plotting.py
  2. 定位 Annotator 类中的 box_label 方法。
  3. 将颜色生成逻辑改为固定红色:
# 原始代码 (约在 265 行附近)
color = color or [random.randint(0, 255) for _ in range(3)]# 修改为固定红色
color = (255, 0, 0)  # BGR: 红色

效果
全局所有预测框变为红色(需重新安装包或修改环境文件)。


额外方案:自定义后处理绘制

手动解析结果并绘制红色框:

import cv2
from ultralytics import YOLO# 加载模型和图像
model = YOLO("yolov8n.pt")
img = cv2.imread("image.jpg")
results = model.predict(img)# 手动绘制结果
for box in results[0].boxes:x1, y1, x2, y2 = map(int, box.xyxy[0].tolist())cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2)  # BGR红色 + 线宽2# 显示结果
cv2.imshow("Red Boxes", img)
cv2.waitKey(0)

方案对比

方案优势适用场景
方案 1简单快捷,单行代码修改临时快速调试
方案 2不修改源码,控制所有类别颜色需全局红色但保留类别文本
方案 3永久生效长期项目且需全局修改
额外方案完全自定义绘制逻辑需要复杂自定义的场景

选择方案时,优先推荐 方案 1(临时使用)或 方案 2(保留类别文本的红色框)。如需永久生效,可用方案 3(注意备份源码)。

http://www.dtcms.com/a/270533.html

相关文章:

  • OpenCV哈希算法------Marr-Hildreth 边缘检测哈希算法
  • 基于DeepSeek构建的openGauss AI智能优化助手:数据库性能提升新利器
  • 微软 Bluetooth LE Explorer 实用工具的详细使用分析
  • 【DOCKER】-3 数据持久化
  • OpenCV图像增强秘籍:高通滤波与特效艺术
  • Web 前端框架选型:React、Vue 和 Angular 的对比与实践
  • PiscTrace深蹲计数功能实现:基于 YOLO-Pose 和人体关键点分析
  • 【python处理excel】B列单元格中的内容都是回车换行的,把这些信息拆成多行多列,并且把A列对应的信息带过去。
  • A模块 系统与网络安全 第四门课 弹性交换网络-2
  • C#正则表达式全面详解:从基础到高级应用
  • 跨部门协作难以对齐项目进度,如何促进协同
  • Rust #[] 语法
  • PHP语法高级篇(一):日期时间处理和包含文件
  • 【系统与工具】Linux——Linux简介、安装、简单使用
  • 详解Kafka重平衡机制详解
  • MySQL8.0基于GTID的组复制分布式集群的环境部署
  • mysql互为主从失效,重新同步
  • 超越公有云:在裸金属服务器上构建低成本、高性能的静态资源服务
  • 创客匠人:创始人 IP 打造中 “放下身段” 的深层逻辑
  • 身份证识别api-便捷生活与安全社会的双重保障
  • 神经网络简介
  • 鸿蒙商城开发:ZKmall开源商城系统特性适配与性能优化
  • 7.神经网络基础
  • 【JavaEE进阶】图书管理系统(未完待续)
  • 【学习笔记】OkHttp源码架构解析:从设计模式到核心实现
  • 保姆级安装 Ruby 环境下载及安装教程, RubyInstaller下载及安装教程
  • Javaweb - 10.7 乱码和路径问题
  • 影石(insta360)X4运动相机视频删除的恢复方法
  • SHA-256算法详解——Github工程结合示例和动画演示
  • 中望CAD2026亮点速递(5):【相似查找】高效自动化识别定位