目录
前言
最近在接触一个项目,要用到语义分割,如果大家有什么问题,都可以跟我沟通交流。除了通过博客交流外,欢迎你加入我的QQ群:326866692,一起交流有关于区块链、机器学习、深度学习、计算机视觉有关内容。我现在处于广泛涉猎阶段,希望我们能够一起沟通。下图是我的群二维码:
上一次我们说到了使用labelme将json文件转化为数据集,转化完成后,每一张图片都生成了一个单独的文件夹,如果我们一个一个把里面的label图像取出来很麻烦,特别是数据量极大地时候,比如我们经常会做好几万的数据集,这个时候再手动取出来就是没事闲的了。
所以我们用代码,将图片集体取出。
一、批量提取
先创建一个python文件,并写入以下代码:
import os
import random
import shutil
import re
GT_from_PATH = "D:/zyt/JSONALL/jsonNew"
GT_to_PATH = "D:/zyt/JSON/ALL1"
def copy_file(from_dir, to_dir, Name_list):
if not os.path.isdir(to_dir):
os.mkdir(to_dir)
# 1
# name_list = os.listdir(from_dir)
# # 2
# sample = random.sample(pathDir, 2)
# print(sample)
# 3
for name in Name_list:
try:
# print(name)
if not os.path.isfile(os.path.join(from_dir, name)):
print("{} is not existed".format(os.path.join(from_dir, name)))
shutil.copy(os.path.join(from_dir, name), os.path.join(to_dir, name))
# print("{} has copied to {}".format(os.path.join(from_dir, name), os.path.join(to_dir, name)))
except:
# print("failed to move {}".format(from_dir + name))
pass
# shutil.copyfile(fileDir+name, tarDir+name)
print("{} has copied to {}".format(from_dir, to_dir))
if __name__ == '__main__':
filepath_list = os.listdir(GT_from_PATH)
# print(name_list)
for i, file_path in enumerate(filepath_list):
gt_path = "{}/{}_gt.png".format(os.path.join(GT_from_PATH, filepath_list[i]), file_path[:-5])
print("copy {} to ...".format(gt_path))
gt_name = ["{}_gt.png".format(file_path[:-5])]
gt_file_path = os.path.join(GT_from_PATH, file_path)
copy_file(gt_file_path, GT_to_PATH, gt_name)
其中,我们需要修改的有如下两个内容:
GT_from_PATH = "" #json生成的文件夹的父文件夹
GT_to_PATH = "" #label输出路径
然后执行代码即可。执行完后的结果如下:
二、图片重命名
可以使用代码,也可以使用软件,我使用的是2345看图王,可以批量修改图片名称,重命名的目的是将图片后面的 “_gt” 去掉。