1.前言
在原版的darknet版的YOLOv3中,图像定位检测的包围框上并不会显示置信度。在对测试样本进行检测后不能直接在图片上看到检测的置信度,只有在命令窗户上能够看到。当在图像上含有多个检测目标时,这会显得十分地不直观。因此有必要对源码进行改进,将置信度直接显示在对应的包围框上。
说明:我用的是YOLOv3(darknet-master),版本不一样也许不能添加成功。
PS:这个代码我是参考一位博主的,但是现在找不到了,请知道的小伙伴在评论区附一下链接,我会引用。
2.修改步骤
1.找到darknet-master\src\image.c文件。
2.打开该文件找到draw_detections_v3函数,在第431行加上下面的代码(复制粘贴下面的代码就好,注意缩进)。
char buff[5];
_gcvt((selected_detections[i].det.prob[selected_detections[i].best_class] * 100), 5, buff);
char prob[] = ":";
strcat(labelstr, prob);
strcat(labelstr, buff);
image prob_label = get_label_v3(alphabet, labelstr, (im.h*.03));
draw_label(im, top + width , left , prob_label, rgb);
free_image(prob_label);
修改过后的代码如下图所示:
前后对照版:
3.重新编译(make),一定要重新编译。