修改Darknet源码,使其可以保存Bounding-box坐标信息

本文介绍了如何修改Darknet框架源码,使其在执行目标检测任务时不仅能输出图片上的检测结果,还能将每个目标的Bounding-box坐标保存到对应的txt文件中。通过新增draw_detections_in_txt()函数并修改test_detector()函数的调用,实现了坐标信息的保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为使用Darknet进行目标检测任务时,框架只会输出图片形式的检测结果(即将bounding-box显式的画在原图上),但并不会输出单独的坐标信息,这给我们的进一步分析带来很多不便。所以我们就要对框架源码进行一定的修改,使其能保存图片中目标的bounding-box坐标到txt文件中。

Step 1

首先我们要找到源码中画框的函数,因为画框是需要坐标信息的,我们可以在这个函数中找到bounding-box的坐标信息。

在源码中,进行画框任务的函数为 ./darknet/src/image.c 里面的 draw_detections() 函数,考虑到框架中多个文件会调用此函数,所以我们不直接对函数进行修改,而是在 image.c 文件中新增一个函数,命名为 draw_detections_in_txt(),这个函数在 draw_detections() 的基础上新增了一个参数 filename ,这个参数用来将 txt 保存成和被检测图片一致的文件名。整个函数如下:

//////////////////////////////JiaXuejian Modified//////////////////////////////////////////////////////////
/////////////////////////////Added an argument:filename////////////////////////////////////////////////////
void draw_detections_in_txt(image im, char *filename, detection *dets, int num, float thresh, char **names, image **alphabet, int classes)
{
    int i,j;

	char *output = filename;
    //output = strcat(output, ".txt");
    //output = strcat("./", output); 
    //printf("PATH:%s", output); 
	int namecount = 0;
	for (namecoun
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值