2020-10-08

这篇博客介绍了处理数据集的一些实用技巧,包括按数字排序文件名、获取CityScapes数据集列表、正确命名文件以及随机切割图像为指定大小的patch。此外,还展示了如何在处理过程中避免命名错误,确保数据集的组织有序。
摘要由CSDN通过智能技术生成

关于dataset需要用到的小技巧:

1、排序sort_humanly()

     python中自带的sorted()函数,通常是直接按照名字对应的ascall码值对应的大小排序,但通常仅仅需要对文件名字中数字进行排序,因此具体实现如下:

def tryint(s):                       #//将元素中的数字转换为int后再排序
    try:
        return int(s)
    except ValueError:
        return s

def str2int(v_str):               # //将元素中的字符串和数字分割开
    return [tryint(sub_str) for sub_str in re.split('([0-9]+)', v_str)]

def sort_humanly(v_list):    #//以分割后的list为单位进行排序
    return sorted(v_list, key=str2int)

2、获得cityscape等公开数据集的list

def get_cityscape_list(path):
    switch = os.listdir(path)
    img_all_list = []
    for i in range(len(switch)):
        img_path = os.path.join(path,switch[i])
        img_switch_list = glob.glob(img_path+"/*.png")
        img_switch_list = sort_humanly(img_switch_list)
        img_all_list.append(img_switch_list)
    img_all_list = _flatten(img_all_list)  #list直接appendlist之后,得到的是一个二维list,通常需要转换成一维list
    return img_all_list

3、存储命名

获取输入图片及前面文件夹名字方式:

img_name = noisy_files[i]
img_name = img_name.replace("hazerain_level1","dehaze_rain")
name = img_name.split("\\")[-1]
name = "\\"+ name
fold_path = img_name.replace(name,"")
if not os.path.exists(fold_path):
    os.mkdir(fold_path)

如果需要重新命名,最好不要直接类似"%d"%str(i)这种,最后的命名排序就是这种1、10、11、12……19、100

正确的命名方式:name = save_dir + "/%03d".format(i)+".png",最后命名的结果就是001,002,  003……

4、对数据随机切割成对应patch大小

input_data = cv2.imread(input_image_path,-1)
label_data = cv2.imread(label_image_path,-1)   #opencv读取的图片为BGR格式

if self.patch_size !=0:
    row = np.random.randint(label_data.shape[0]-self.patch_size)
    col = np.random.randint(label_data.shape[1]-self.patch_size)

    input_data = input_data[row:row+self.patch_size, col:col+self.patch_size, :]
    label_data = label_data[row:row+self.patch_size, col:col+self.patch_size, :]
input_data = np.transpose(input_data,(2,0,1))   #将BGR图片格式转换成RGB格式
label_data = np.transpose(label_data,(2,0,1)) 

后续………………

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个 SQL 语句,用于向借阅表中插入数据。该表包含以下字段:借阅编号、读者编号、书籍编号、借阅日期、归还日期、借阅状态。每条数据表示一次借阅记录。其中借阅编号、读者编号、书籍编号、借阅日期和借阅状态是必填项,归还日期为可选项,如果借阅状态为“已还”则必须填写归还日期。 具体插入的数据如下: - 借阅编号:100001,读者编号:123413,书籍编号:0001,借阅日期:2020-11-05,归还日期:NULL,借阅状态:借阅 - 借阅编号:100002,读者编号:223411,书籍编号:0002,借阅日期:2020-9-28,归还日期:2020-10-13,借阅状态:已还 - 借阅编号:100003,读者编号:321123,书籍编号:1001,借阅日期:2020-7-01,归还日期:NULL,借阅状态:过期 - 借阅编号:100004,读者编号:321124,书籍编号:2001,借阅日期:2020-10-09,归还日期:2020-10-14,借阅状态:已还 - 借阅编号:100005,读者编号:321124,书籍编号:0001,借阅日期:2020-10-15,归还日期:NULL,借阅状态:借阅 - 借阅编号:100006,读者编号:223411,书籍编号:2001,借阅日期:2020-10-16,归还日期:NULL,借阅状态:借阅 - 借阅编号:100007,读者编号:411111,书籍编号:1002,借阅日期:2020-9-01,归还日期:2020-9-24,借阅状态:已还 - 借阅编号:100008,读者编号:411111,书籍编号:0001,借阅日期:2020-9-25,归还日期:NULL,借阅状态:借阅 - 借阅编号:100009,读者编号:411111,书籍编号:1001,借阅日期:2020-10-08,归还日期:NULL,借阅状态:借阅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值