输出yolo的测试结果,根据坐标裁剪原图并保存

本文介绍如何根据Yolo的测试结果坐标,裁剪原图并保存。主要修改了`src/image.c`中的`draw_detections`函数,添加了保存文件的功能。在`darknet.h`中更新函数定义,并调整`examples/detector.c`中的`test_detector`函数以处理批量图片。通过这些修改,实现了将检测到的前9个框保存到单独图像文件的目标。

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

因为项目中的需要,本篇博文实现输出(保存)yolo的测试结果,并测试结果的坐标位置切割原图,并不需要知道每个框的类别,保存了top9。
主要对src/image.c文件中的draw_detections函数做了修改。

//添加了 char *filename ,为了得到当前的图片名。
void draw_detections(image im, int num, float thresh, box *boxes, float **probs, float **masks, char **names, image **alphabet, int classes, char *filename)
{
    printf("num %d\n", num);  
    float rawmax[num];
    int i,j;
    int params[3];
    char savePath[100] = "";
    //为了得到top19的框,将每个框按照最大概率值进行了排序,取了top19. b,c矩阵都是为了得到top9对应的原框的下标,好得到坐标点。
    for(i =0; i<num; i++){
    rawmax[i] = probs[i][0];
    for(j =0;j<classes;j++){
         if(probs[i][j] > rawmax[i]){
          rawmax[i] = probs[i][j];                                     }
    }
    }
    for( i =0;i<num;i++){
      if(rawmax[i] > 0)
       printf("rawmax[ %d]:%f\n",i,rawmax[i]);
    }
   float b[num];
   int c[num];

   for(i =0; i<num; c[i]= 1+ i++){
      b[i] = rawmax[i];
   }
   int x;
   for(i =0;i<num;i++){
      for(x = i,j = x+1; j<num;j++)
       if(b[x]<b[j]) x = j;
       if(x!=j){
        j= b[i];
        b[i] = b[x];
        b[x] = j;
        j = c[i];
        c[i] = c[x];
        c[x] = j;
     }
      }
  //输出top9的坐标,后面的代码注释掉了,因为我只需要根据坐标切割出子
### YOLOv8保存检测结果与训练模型文件的方法 在YOLOv8中,无论是保存检测结果还是保存训练后的模型文件,都可以通过配置参数来实现。以下是具体方法: #### 1. 保存检测结果 当使用YOLOv8进行推理时,默认会将检测结果保存到指定目录下。可以通过设置`--save-txt`或`--save-conf`等参数控制保存行为。 - **保存图像/视频** 如果希望保存带有标注框的图片或视频,只需运行命令时不额外添加特殊参数即可。默认情况下,程序会在当前工作目录下的`runs/detect/predict`路径中创建子文件夹存储结果[^1]。 - **保存为文本文件** 若要将检测结果以`.txt`格式保存(每张图片对应一个文本文件),可以启用`--save-txt`选项。例如: ```bash yolo detect predict model=path/to/best.pt source=data/images save-txt=True ``` - **保存置信度分数** 若还需要记录每个边界框的置信度分数,则可进一步开启`--save-conf`标志位。这将在上述提到的`.txt`文件里追加一列用于表示该物体类别的概率值。 #### 2. 保存训练模型文件 对于训练过程中的模型权重管理,YOLOv8提供了多种机制来自定义存档位置以及频率等方面的内容。 - **自动保存最佳性能模型** 训练期间系统会定期评估验证集上的表现,依据指标挑选最优版本予以保留至`runs/train/exp/weights/best.pt`之中。 - **周期性备份中间状态模型** 此外,在每一次epoch结束之后还会生成一份临时快照放置于相同目录结构下面名为`last.pt`的文件当中,方便随时恢复中断的任务继续执行下去。 - **手动调整保存策略** 用户也可以修改超参设定项里的相关内容比如`project`, `name`, 和`exist_ok`等等字段来自定义最终产出物的具体安放地点。如下所示即是一个典型例子: ```yaml project: my_project # 定义项目名称空间 name: exp # 实验批次代号 exist_ok: False # 是否允许覆盖已有成果 ``` ```python from ultralytics import YOLO model = YOLO('yolov8n.yaml') # 初始化新模型或者加载预训练权重 results = model.train(data='coco128.yaml', epochs=10, imgsz=640) ``` 以上代码片段展示了如何基于Python API启动一次完整的训练循环操作的同时确保所有必要的元数据都被妥善保管起来供后续分析调用。 ---
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值