将数据集中的标注部分单独保存(DOTA数据集)

此代码片段展示了如何使用OpenCV和mmcv库读取Tianzhi saidao2_train_dataset中的图像,根据GT标签文件提取指定类别的边界框,并将裁剪后的图像保存到新的目录中。它遍历文件夹,解析每个图像对应的GT标签,只保留指定类别的框并进行坐标转换。

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

import mmcv
import cv2
import os
import json
import numpy as np
from tqdm import tqdm
img_dir="/media/liuyanxin/7bb102f1-967f-40cb-8069-704229851f24/heaven/tianzhi_saidao2_train_dataset/Tianzhi/train/images"
save_dir="/media/liuyanxin/7bb102f1-967f-40cb-8069-704229851f24/heaven/tianzhi_saidao2_train_dataset/Tianzhi/K/"
gt_txt_dir="/media/liuyanxin/7bb102f1-967f-40cb-8069-704229851f24/heaven/tianzhi_saidao2_train_dataset/Tianzhi/train/labelTxt"
image_name_list=os.listdir(gt_txt_dir)
class_of_gt="K"
for image_name in image_name_list:
    #image_name="253.txt"
    gt_txt_path = os.path.join(gt_txt_dir, image_name.split('.')[0] + '.txt')
    #gt_txt_path ="/media/liuyanxin/7bb102f1-967f-40cb-8069-704229851f24/heaven/tianzhi_saidao2_train_dataset/train/labelTxt/253.txt"
    with open(gt_txt_path, "r") as f:
        gt_labels = f.readlines()
        for i in range(len(gt_labels)):
            if gt_labels[i].replace("\n", "").split(' ')[-1] == class_of_gt:
                data = gt_labels[i].replace("\n", "").split(' ')[:-1]
                for j in range(8):
                    if (int(data[j])<0):
                        data[j]="0"
                x1 = int(data[0])
                y1 = int(data[1])
                x2 = int(data[2])
                y2 = int(data[3])
                x3 = int(data[4])
                y3 = int(data[5])
                x4 = int(data[6])
                y4 = int(data[7])
                xmax=max(x1,x2,x3,x4)
                ymax=max(y1,y2,y3,y4)
                xmin=min(x1,x2,x3,x4)
                ymin=min(y1,y2,y3,y4)
                image_path=os.path.join(img_dir, image_name.split('.')[0] + '.png')
                img_box = [xmin, ymax, xmax, ymin]
                image=cv2.imread(image_path)
                box_roi = image[img_box[3]:img_box[1], img_box[0]:img_box[2],:]
                #save_path_final=os.path.join(gt_txt_dir, image_name.split('.')[0] + '.txt')
                cv2.imwrite(save_dir+image_name.split('.')[0]+"_"+str(i)+"_"+str(xmin)+"_"+str(xmax)+"_"+str(ymin)+"_"+str(ymax)+".jpg", box_roi)

                # except :
                #     gt = data
                # if i == 0:
                #     gt = data
                # else:
                #     gt = np.vstack((gt, data))
            else:
                pass```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值