在检测结果图中,官方的检测样式可能不满足我们的需求,常常修改更改检测框的颜色,粗细,标签背景颜色,大小,标签名称等内容,下面就介绍一下,这些地方如何修改。
在YOLOv9
的源代码中,utils/plots.py
中实现了绘图的相关代码,在这个文件的box_label
函数下实现了检测框绘制的相关内容,具体的内容已经标注:
1️⃣ cv2.rectangle(self.im, p1, p2, color, thickness=self.lw, lineType=cv2.LINE_AA)
绘制的是检测框的相关内容。
color
代表检测框的颜色,修改方式为:
将color
换成其它BGR色调 例如:(255, 0, 0) BGR蓝色
BGR | 颜色 |
---|---|
(0, 0, 255) | 红色 |
(255, 0, 0) | 蓝色 |
(0, 255, 0) | 绿色 |
(0, 0, 0) | 黑色 |
(255, 0,255) | 紫色 |
thickness
代表检测框的粗细,可以修改为成2或3或5...或者其它大小
,只要绘制的好看就行。
cv2.rectangle(self.im, p1, p2, (255, 0, 0), thickness=2, lineType=cv2.LINE_AA)
此时就代表我将检测框的颜色修改为蓝色,粗细为2
2️⃣ w, h = cv2.getTextSize(label, 0, fontScale=self.lw / 3, thickness=tf)[0]
主要用来控制标签的背景相关信息,就是标签背后的那一块实心区域。
可以修改的是fontScale
,将其指定为2或3或5...或者其它大小
,同样只要绘制的好看就行。
w, h = cv2.getTextSize(label, 0, fontScale=2, thickness=tf)[0]
3️⃣ cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA)
可以修改标签背景的颜色,修改方法和上方的一致,建议颜色和检测框一致。
cv2.rectangle(self.im, p1, p2, color, -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)
4️⃣ 这里用来控制标签的相关信息。
其中label
表示标签的名称,初始的是数据集中的标签,单标签的可以直接在这里进行修改成字符串的形式内容。
self.lw / 3
表示标签的大小,和上方的标签背景大小一致,若修改,建议设置成同等大小。
cv2.putText(self.im,
'changed', (p1[0], p1[1] - 2 if outside else p1[1] + h + 2),
0,
2,
txt_color,
thickness=tf,
lineType=cv2.LINE_AA)
此时就代表我将标签名称修改为:changed,大小为2