《记录自己在使用yolov5遇到的一些问题》同时也供大家参考,如果对你们有帮助,希望大家可以给个点赞、收藏鼓励下,非常感谢!

以自带的一张图片作为示例,yolov5(6.1版本)的初始检测框应该是如下图所示

首先有一些参数作者已经放在detect.py的parse_opt()里,如下代码所示:

parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)')
parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels')
parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences')

顾名思义,“--line-thickness” 是修改矩形框和文本标签线条的粗细的,如果你觉得标签小了可以直接调整这里的数值(本人之前在这里踩了大坑,还去plot.py里修改一些参数,后面会说到,虽然大了但是会出现失真,标签会变得模糊。)

"--hide-labels"(隐藏标签)和"--hide-conf"(隐藏置信度)就比较直观了,直接上图:

想要修改其他信息就要打开utils文件夹里的plots.py文件了。打开文件后搜索(ctrl+f)box_label()这个函数,大概在82行左右。

def box_label(self, box, label='', color=(128, 128, 128), txt_color=(255, 255, 255)):# Add one xyxy box to image with labelif self.pil or not is_ascii(label):self.draw.rectangle(box, width=self.lw, outline=color)  # boxif label:w, h = self.font.getsize(label)  # text width, heightoutside = box[1] - h >= 0  # label fits outside boxself.draw.rectangle((box[0],box[1] - h if outside else box[1],box[0] + w + 1,box[1] + 1 if outside else box[1] + h + 1), fill=color)# self.draw.text((box[0], box[1]), label, fill=txt_color, font=self.font, anchor='ls')  # for PIL>8.0self.draw.text((box[0], box[1] - h if outside else box[1]), label, fill=txt_color, font=self.font)else:  # cv2p1, p2 = (int(box[0]), int(box[1])), (int(box[2]), int(box[3]))cv2.rectangle(self.im, p1, p2, color, thickness=self.lw, lineType=cv2.LINE_AA)if label:tf = max(self.lw - 1, 1)  # font thicknessw, h = cv2.getTextSize(label, 0, fontScale=self.lw / 3, thickness=tf)[0]  # text width, heightoutside = p1[1] - h - 3 >= 0  # label fits outside boxp2 = p1[0] + w, p1[1] - h - 3 if outside else p1[1] + h + 3cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA)  # filledcv2.putText(self.im, label, (p1[0], p1[1] - 2 if outside else p1[1] + h + 2), 0, self.lw / 3, txt_color,thickness=tf, lineType=cv2.LINE_AA)

如果不想显示检测框只需要注释下面这行代码即可,如果要修改检测框的大小等参数,对应修改就行,效果如下图:

cv2.rectangle(self.im, p1, p2, color, thickness=self.lw, lineType=cv2.LINE_AA)
#self.img 图片
#p1  所画检测框的左上角坐标
#p2  所画检测框的右下角坐标
#thick 线的粗细
#linetype 线型 

如果不想显示标签框只需要注释掉下面这行代码即可,同样如果要修改标签框的大小等参数,对应修改就行效果如下图:

cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA)  # filled
#self.img 图片
#p1  所画框的左上角坐标
#p2  所画框的右下角坐标
#color 框的颜色,可以以自己修改(b,g,r)
#-1  框的粗细  如果为负值则代表填充整个框
#cv2.LINE_AA 线型 

最后应该就是标签文本信息的修改了,可以配合上面两行代码一起修改,单独注释效果如下图:

cv2.putText(self.im, label, (p1[0], p1[1] - 2 if outside else p1[1] + h + 2), 0,self.lw / 3, txt_color,thickness=tf, lineType=cv2.LINE_AA)
#self.im 输出在哪一张图片,这里就是检测的图片
#label   输出内容(str格式),这里就是标签
#(p1[0], p1[1] - 2 if outside else p1[1] + h + 2) 左上角坐标位置
#0 官方解释是Font scale factor that is multiplied by the font-specific base size.感觉这里也是改变字体的粗细
#tetcolor 文字颜色
#thickness  用于绘制文本的线条的粗细
#LineTypes 线型

不知道为什么,我自己在单独使用cv2.puttext的命令时,会出标签比较模糊的现象,如果有读者知道了也希望可以告知,万分感谢。

2022/10/25日新增:有同学私信跟我交流如何添加坐标信息,本人的思路是直接用putText(),将打印内容改成你想打印的坐标(我这里打印的是左上角的坐标),稍微调整一下打印在图上的位置坐标。

cv2.putText(self.im, "("+str(p1[0])+","+str(p1[1])+")", (p1[0]+5, p1[1] -50 if outside else p1[1] + h + 2), 2, self.lw / 3, txt_color,thickness=tf, lineType=cv2.LINE_AA)

2022/11/22日新增:有同学私信我跟我交流如何只显示部分标签和置信度,本人的思路是在detect.py中找到标签显示语句:

label = None if hide_labels  else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')

原标签显示逻辑为:“标签 = 无 如果“隐藏标签”否则显示标签”,我们只需要再加入我们所需要的判断条件即可,比如不想显示“person”只需修改代码为:

label = None if hide_labels or names[c]=="person" else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')

2023/4/3日新增:有同学私信问:如何给不同物体自定义方框颜色,比如想定义框选person的框为紫色(128,0,128),框选tie的为灰色(169,169,169)。我的思路:在画框的前加一个if判断,代码(101行左右)如下:

else:  # cv2p1, p2 = (int(box[0]), int(box[1])), (int(box[2]), int(box[3]))if 'person' in label:cv2.rectangle(self.im, p1, p2, (128,0,128), thickness=self.lw, lineType=cv2.LINE_AA)if 'tie' in label:cv2.rectangle(self.im, p1, p2, (169, 169, 169), thickness=self.lw, lineType=cv2.LINE_AA)if label:

如果想显示部分目标框也是同理,比如你只想显示person,你就在画框的代码前加一个if判断是否为”person",就不要加后面“tie”的判断了。

注:以上只是本人对自己学习过程的总结,仅供大家参考,如果出现错误,希望大家可以理解并指正。博主现在也比较忙,佛系更新,大家如果问题解决了,可以把方法评论下来,或者私信给博主,我会跟新博文并添加上你的名字。

yolov5/v7修改标签和检测框显示【最全】相关推荐

  1. yolov5检测框显示中文标签

    目录 前言 1.有中文标签的数据集 2.yolov5代码修改为支持中文标签 前言 很多人在训练yolov5目标检测的时候,标签只能显示英文的.怎么样才可以训练一个可以检测物体并且显示中文标签的模型呢. ...

  2. 前端实现input标签输入框密码框显示文字效果

    背景:各种登录网址账号密码输入框中的显示文字效果,当点击输入框时,显示的文字消失,当离开输入框后再次显示默认的文字 思路:采用 input 标签,给它设置 CSS 样式,这里本人将两个 input 标 ...

  3. 目标检测算法——YOLOv5/YOLOv7如何改变bbox检测框的粗细大小

    深度学习Tricks,第一时间送达 目标检测 YOLOv5 常见的边框(bounding box )坐标表示方法 边框是在图像上标记目标的矩形.边框的标注有多种格式.每种格式都使用其特定的边框坐标表示 ...

  4. YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 随着自动驾驶汽车和自动赛车越来越受欢迎,对更快.更准确的检测器 ...

  5. html文本框 控件,标签和文本框都用于显示文本

    用标签和文本框都可以显示文本信息,二者有什么区别 标签和文本框控件都可以显示文本,它们之间有什么区别?标签只能显示一横... 文本框可以显示很多横... 不对.标签框(Label)不能输入文本. VB ...

  6. 使用YOLOv5实现人脸口罩佩戴检测(详细)

    前言 最近把李沐大神<动手学深度学习v2>的目标检测部分学完了,就想找一个项目练练手,学以致用嘛,觉着人脸口罩佩戴检测比较符合当下时代背景,所以就选择了这个项目,也是前几天刚刚完成的,写下 ...

  7. 基于yolov5的Android版本目标检测app开发(部署安卓手机)

    基于yolov5的Android版本目标检测app开发(部署安卓手机) 0.项目开发需求 (1)开发app部署到安卓手机 (2)支持VOC数据集上所有的目标检测 1.开发环境搭建 windows10+ ...

  8. 目标检测-使用YOLOV5搭建自己的目标检测平台(手把手)

    鄙人刚接触目标检测,将自己的心得体会写出来,希望对大家有帮助 文章目录 一.说在前面 二.实验步骤 1.搭建实验环境 2.数据集的标注与划分 3.使用YOLOV5训练自己的目标检测模型 三.参考文章 ...

  9. 使用yolov5训练自己的目标检测数据集

    使用yolov5训练自己的目标检测数据集 yolov4出来后不久,又出现了yolov5,没有论文.虽然作者没有放上和yolov4的直接测试对比,但在COCO数据集的测试效果还是很可观的.很多人考虑到Y ...

最新文章

  1. hive 使用技巧笔记
  2. TCP通信速率与延时关系
  3. QT学习笔记之QTableView设置属性的方法
  4. GDCM:区分音量DiscriminateVolume的测试
  5. python contains类似函数_五步教会你用python爬虫神器PyQuery!(内含详细步骤和代码)...
  6. php解密 eval( base64_decode,PHP之eval(gzinflate(base64_decode加密解密
  7. C#面向对象17 23种设计模式
  8. Python用户界面编程PyQt5的四种的布局方式
  9. PyCharm设置背景颜色
  10. 为什么不推荐使用BeanUtils属性转换工具,老程序员都不使用!
  11. python公众号文章爬虫_微信公众号文章爬虫
  12. android 表情变小了,别羡慕了!安卓微信表情包上限也变成999了!
  13. 最简单24点算法,可任意实现n数n点,一看就明!
  14. 标题中冒号的用法_英文中冒号的各种用法
  15. 韵达快递 | 快递单号查询API
  16. 1_11_4 23 python基础学习
  17. 深访杨超越杯编程大赛发起人 还原硬核粉丝追星全过程
  18. 魔改大西瓜源码下载之后画面显示只有一半的解决方法
  19. 关于eclipse项目中项目上直接出现大红感叹号的问题
  20. 微信小程序--搜索框样式 及form提交实现

热门文章

  1. Qt+OpenCV之图片中的人脸识别及人脸抠图
  2. 操作系统检查更新时报错,错误代码80072EFE
  3. 9继承进阶_抽象类_接口
  4. BroadCast的两种使用方法
  5. MogaFX—随着投资者关注收益,华尔街股市上涨
  6. Linux设备驱动开发---USB主机(控制器)与设备驱动(一)
  7. 鹏业云计价i20应用技巧之清单计价与定额计价互转应用
  8. word中插入公式的快捷键_如何使用插入键在Word中插入复制的内容
  9. 超链接做按钮 禁止跳转 submit 或 location 导致 return false 不起作用
  10. html小球碰撞源代码,JS实现小球的弹性碰撞效果