GT标签格式就是 yolo label的形式,也就是.txt格式,而且命名除了后缀与图片不同其他是一样的,具体的排放路径如下,其中LGT是主目录:

图片就全部放在images中,标签就全部放在labels中,最终的输出图片默认放在output中

有一点需要说明,就是框的颜色问题,根据yolov5的plots.py文件,颜色的顺序是这样的,具体可以查看源文件:

hex = ('FF3838', 'FF9D97', 'FF701F', 'FFB21D', 'CFD231', '48F90A', '92CC17', '3DDB86', '1A9334', '00D4BB','2C99A8', '00C2FF', '344593', '6473FF', '0018EC', '8438FF', '520085', 'CB38FF', 'FF95C8', 'FF37C7')

这些颜色出现的顺序是与你训练时使用的yaml文件有关的,比如,如果yaml文件中标签的顺序是这样:

# Classes
nc: 4  # number of classes
names: ['D10', 'D00', 'D20', 'D40']  # class names

这就意味着D10标签的颜色是 FF3838,以此类推。这里颜色的表示是HEX格式,利用opencv画图传入的颜色格式是BGR!注意是BGR不是RGB!!!
几乎所有的颜色转换网站默认的颜色格式是rgb,需要自己换一下,切记!

# -- coding: utf-8 --
import os
import shutil
from pathlib import Path
import numpy as np
import cv2
from tqdm import tqdm# 修改输入图片文件夹
img_folder = "LGT/images"
img_list = os.listdir(img_folder)
img_list.sort()
# 修改输入标签文件夹
label_folder = "LGT/labesl"
label_list = os.listdir(label_folder)
label_list.sort()
# 输出图片文件夹位置
output_folder = 'LGT/output'labels = ['D10', 'D00', 'D20', 'D40']  # 这里修改为自己的类别# 色盘,可根据类别添加新颜色,注意第一个别动,这是字体的颜色也就是白色,往后面推
colormap = [(255, 255, 255), (56, 56, 255), (151, 157, 255), (31, 112, 255), (29, 178, 255)]   # 不是RGB,是BGR# 坐标转换
def xywh2xyxy(x, w1, h1, img):label, x, y, w, h = xlabel = int(label)label_ind = label# 边界框反归一化x_t = x * w1y_t = y * h1w_t = w * w1h_t = h * h1# 计算坐标top_left_x = x_t - w_t / 2top_left_y = y_t - h_t / 2bottom_right_x = x_t + w_t / 2bottom_right_y = y_t + h_t / 2p1, p2 = (int(top_left_x), int(top_left_y)), (int(bottom_right_x), int(bottom_right_y))# 绘制矩形框cv2.rectangle(img, p1, p2, colormap[label_ind+1], thickness=2, lineType=cv2.LINE_AA)label = labels[label_ind]if label:w, h = cv2.getTextSize(label, 0, fontScale=2 / 3, thickness=2)[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 + 3# 绘制矩形框填充cv2.rectangle(img, p1, p2, colormap[label_ind+1], -1, cv2.LINE_AA)# 绘制标签cv2.putText(img, label, (p1[0], p1[1] - 2 if outside else p1[1] + h + 2), 0, 2 / 3, colormap[0],thickness=2, lineType=cv2.LINE_AA)return imgif __name__ == '__main__':# 创建输出文件夹if Path(output_folder).exists():shutil.rmtree(output_folder)os.mkdir(output_folder)# labels和images可能存在不相等的情况,需要额外判断对应关系img_index = 0label_index = 0for _ in tqdm(range(len(label_list))):image_path = img_folder + "/" + img_list[img_index]label_path = label_folder + "/" + label_list[label_index]if img_list[img_index][:-4] != label_list[label_index][:-4]:img_index += 1continue# 读取图像文件img = cv2.imread(str(image_path))h, w = img.shape[:2]# 读取 labelswith open(label_path, 'r') as f:lb = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32)# 绘制每一个目标for x in lb:# 反归一化并得到左上和右下坐标,画出矩形框img = xywh2xyxy(x, w, h, img)cv2.imwrite(output_folder + '/' + '{}.png'.format(image_path.split('/')[-1][:-4]), img)img_index += 1label_index += 1

参考博客:颜色格式转换网站,代码主体来源

yoloV5 Ground Truth box框框的绘制相关推荐

  1. 基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子)

    基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子) 概述 许多目标检测的数据是通过直接标注或者公开平台获得,如果存在语义分割Ground Truth的标签文件 ...

  2. 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling

    最近刚接触图像识别,理解一些概念十分困难,尤其是动不动就冒出个看不懂的英语,让人抓狂.查了不少资料后做一个总结并加上一些自己的理解,理解若有误,烦请大家指出,相互学习. 本文主要对region pro ...

  3. 【目标检测】grid cell、bounding box、ground truth的含义

    记录几个名词解释,如果有表达不准确或不充分的地方欢迎指正. grid cell 就相当于划分好的网格,比如说YOLOv1是将图片分成7*7的网格,然后这49个网格每个网格就是一个grid cell. ...

  4. 任意角度旋转图片的ground truth目标检测框

    任意角度旋转图片的ground truth目标检测框 (感谢前辈)转自:https://zhuanlan.zhihu.com/p/72129125 因为检测一个物体的时候需要对目标进行多个任意角度的旋 ...

  5. 【庖丁解牛】从零实现FCOS(二):ground truth分配与loss计算

    文章目录 Anchor free?Anchor base? FCOS的ground truth分配 loss计算 完整loss代码 所有代码已上传到本人github repository:https: ...

  6. 目标检测_0.1检测目标和真值(ground truth)匹配

    1.问题 验证目标检测模型性能时候,模型输出检测目标需要和真值目标匹配,然后计算精度acc.主要涉及bounding box和label的匹配. 2.目标检测流程 (1)图片输入模型,并输出检测目标的 ...

  7. 【深度学习笔记】关键点检测——标签(Ground Truth)构建

    首先介绍一下关键点回归的Ground Truth的构建问题,主要有两种思路,Coordinate和Heatmap,Coordinate即直接将关键点坐标作为最后网络需要回归的目标,这种情况下可以直接得 ...

  8. 图像中里面的Ground Truth

    经常会在一些项目中,遇到Ground Truth,例如把其中的某种图像类型叫做Ground True, 下面介绍一下: 一.Ground True的介绍 下从机器学习说起,什么叫做Ground Tru ...

  9. 北斗导航 | 读取ground truth data(python源代码)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

最新文章

  1. 判定两棵二叉树是否相似以及左右子树交换、层次编号
  2. C语言将数组中的值逆序存放
  3. 联手IBM布局云计算,王健林如何再造一个新万达?
  4. 1.MySQL的安装(linux Ubuntu环境下)
  5. Elastic-Job简介
  6. 【Docker】Docker操作常用命令
  7. 打开程序时固定位置_FANUC机器人:参考位置功能介绍与设定方法
  8. springboot线程池配置
  9. SIAM International Conference on Data Mining, SDM 会议怎么样?
  10. LAMP架构调优(九)——Apache Rewrite功能实战
  11. php mud游戏源码,mud 文字游戏 - 源码下载|游戏|源代码 - 源码中国
  12. 电子通信协议之CAN总线协议篇
  13. ArcFace论文翻译
  14. cuda10安装——在CentOS上安装的艰难过程
  15. kindle android 音标 乱码,在乐视2手机上解决kindle阅读器即译时音标显示正常的问题...
  16. 手机通过外网(HFS)访问电脑文件
  17. 多飞行机器人吊运系统研究进展及挑战
  18. C语言实现日历打印小程序
  19. R语言柯西(cauchy)分布
  20. 巨斧砍大树-sdut

热门文章

  1. 推荐一个公司内部接口文档管理方案
  2. java顺风车匹配_嘀嗒顺风车以“信息匹配六步走”的模式保障“真顺风”
  3. 未来可期!274位博士新生入学西湖大学
  4. Node.js+Socket.io实现双人在线五子棋对战
  5. 计算机应用基础第三阶段答案,2013秋中国石油大学《计算机应用基础》第三阶段在线作业(自测)...
  6. 2020-2021Android开发岗面经合集:90% 成功率的BAT Offer 收割机是怎样练成的!(内附快手,陌陌,小米面经)
  7. 百度地图实现轨迹回放(显示到达时间)
  8. 小程序ios软键盘弹起挡住input输入框
  9. linux计划任务怎么使用,在 Linux 中怎么使用 cron 计划任务
  10. CentOS8查看本机IP