一共分两步:
第一步:在yolo所有的txt标签文件中挑出只包含固定类别的txt标签文件;
第二步:根据标签文件,筛选图片
第一步:
python
import os.path
import shutil
# 遍历指定目录
def eachFile(filepath):
# os.listdir: 该函数返回指定的文件夹包含的文件
pathdir = os.listdir(filepath)
for alldir in pathdir:
child = os.path.join(filepath,alldir)
if os.path.isfile(child):
readfile(child)
continue
eachFile(child)
# 遍历出结果,返回文件的名字
def readfile(filename):
f = open(filename, 'r')
line = f.readline() # 以行的形式进行读取文件
list1 = []
while line:
# line.split('\t''\n'):'\t'和'\n'是两个字符串,会自动进行拼接,形成'\t\n'作为分隔符。
# 默认把所有的空格、制表符、回车符当作分隔符,并过滤掉空串。
a = line.split()
str = a[0] # 读取改行的第一个数据(类别)
if str == '0' or '1':
list.append(filename)
shutil.copy(filename, 'E:\multyfs2single\label0') # 要保存的路径
print("匹配到:" + filename)
line = f.readline()
f.close()
if __name__ == "__main__":
filename = 'E:\multyfs2single\label'
arr = []
eachFile(filename)
第二步:
python
import os
import shutil
txt_dir = "E:/multyfs2single/label0/"
image_dir = "E:/multyfs2single/img0/"
origin_img_dir = "E:/multyfs2single/img/"
for file in os.listdir(txt_dir):
# splitext()是用于从后往前切割文件名,[0]:文件名;[1]:后缀
shutil.copy(origin_img_dir + '/' + os.path.splitext(file)[0] + '.png',
image_dir + '/' + os.path.splitext(file)[0] + '.png')