大家在检测一些密集目标时经常会遇到标签名互相遮挡的情况,给大家分享一个调整标签透明度的方法。

修改方式非常简单,只需要修改一个文件 ultralytics/yolo/utils/plotting.py

第一步将 cv2.rectangle(self.im, p1, p2, color, thickness=self.lw, lineType=cv2.LINE_AA) 这句注释掉,

换成下面这三句:

1
2
3
4
5
overlay = self.im.copy()

alpha = 0.7 # 透明度 数值越小 透明度越高

cv2.rectangle(overlay, p1, p2, color,thickness=self.lw, lineType=cv2.LINE_AA)

第二步将

1
2
cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA)  # filled
cv2.putText(self.im,

注释掉

换成

1
2
cv2.rectangle(overlay, p1, p2, color, -1, cv2.LINE_AA)  # filled
cv2.putText(overlay,

最后添加self.im = cv2.addWeighted(overlay, alpha, self.im, 1 - alpha, 0)

效果:

如果只要改变掩码的透明度,以上步骤不用做。

直接修改def masks(self, masks, colors, im_gpu, alpha=0.3, retina_masks=False):alpha的值即可