Table of Contents
1. 加载识花数据集。接下来我们将 flower_photos 文件夹中的花朵图片都载入到进来,并且用图片所在的子文件夹作为标签值。
data_dir = 'flower_photos/' contents = os.listdir(data_dir) classes = [each for each in contents if os.path.isdir(data_dir + each)]
代码讲解:
#返回文件夹中 子文件及子文件夹 名称的列表,contents为['tulips', 'dandelion', 'LICENSE.txt', 'roses', 'sunflowers', 'daisy']
contents = os.listdir(data_dir)
#去掉子文件的名称,只保留子文件夹的名称。classes即为['tulips', 'dandelion', 'roses', 'sunflowers', 'daisy']
classes = [each for each in contents if os.path.isdir(data_dir + each)]
python 从txt文件查找含某字段的行,并将这些行名称的图像提取出来另存
图片成批resize
import skimage
import skimage.io
import skimage.transform
import numpy as np
import scipy.misc
import os
from skimage import io
#file中文件需放在当前文件夹下一份,这里不知道怎么改进
for filename in os.listdir("flie"):
print(filename)
img = skimage.io.imread(filename)
h,w = img.shape[:2]
print(h, w)
if h<w:
t = h
else:
t = w
j = int(round((h - t)/2.)) #round()为返回浮点数的四舍五入值
i = int(round((w - t)/2.))
img1 = skimage.transform.resize(img[j:j+t, i:i+t], [256, 256])
scipy.misc.imsave('new/{}'.format(filename),img1)
print("*****************")
# 读取指定文件夹下所有文件的路径,并形成列表格式
import glob
sample_files = glob.glob('./datasets/yibiaoMerge/val/*.jpg')
print(sample_files)
>>> ['./datasets/yibiaoMerge/val/merge_3026.jpg',
'./datasets/yibiaoMerge/val/merge_3023.jpg',
'./datasets/yibiaoMerge/val/merge_3022.jpg']
# 截取带有分隔符的字符串的某部分
x = './datasets/yibiaoMerge/val/merge_3026.jpg'
print(x)
>>> ./datasets/yibiaoMerge/val/merge_3026.jpg
b = x.split('/')[-1].split('.jpg')[0]
print(b)
>>> merge_3026
多个文件夹中某文件,都保存到另一文件夹中
import os
import shutil
#先建立labelPng文件夹
for filename in os.listdir("./"):
# print(filename)
if '_json' in filename:
for pngfile in os.listdir(filename):
if 'IMG' in pngfile:
print(pngfile)
shutil.copy('{}/{}'.format(filename,pngfile),'labelPng/')
多个文件夹中某文件,都保存到另一文件夹中,并重命名
# 将多个json文件夹中的img和label复制到新的文件夹
# 并以json文件夹的名字(本代码对json文件夹的名字进行了修改)重命名
import os
import shutil
#先建立labelPng文件夹
for filename in os.listdir("./"):
# print(filename)
if '_json' in filename:
newname = filename.split('_')[0].split('roi')[0]
for pngfile in os.listdir(filename):
if 'img' in pngfile:
# print(pngfile)
# shutil.copy('{}/{}'.format(filename,pngfile),'normal_img/')
shutil.copyfile('{}/{}'.format(filename,pngfile),'normal_img/{}.png'.format(newname))
if 'label.png' in pngfile:
shutil.copyfile('{}/{}'.format(filename,pngfile),'normal_label/{}.png'.format(newname))
多个文件夹中,1/4数据用做测试集,其它用作训练集
import os
import random
import shutil
dir_files = os.listdir()
for dir_file in dir_files:
if 'Merge' in dir_file:
file_list = os.listdir(dir_file)
# 随机打乱list
random.shuffle(file_list)
# 选择1/4的数据测试用,其它训练用
num_files = len(file_list)
# print(num_files)
# 向下取整
num_val = num_files // 5
for val_file in file_list[:num_val]:
shutil.copy(dir_file+'/'+val_file, 'val/')
for train_file in file_list[num_val:]:
shutil.copy(dir_file+'/'+train_file, 'train/')