实现目标:批量的缩小图片
如果要训练一个自己的图片分类神经网络那么就很必要自己来训练一个神经网络,我们需要三个文件夹,一个是训练集,一个是测试集,一个是验证集
训练集:所有有效图片的8成
测试集:所有有效图片的100%
验证集:只含有20%左右的有效图片,其他是无关图片
因为运算量的限制所以必须要先缩小图片
实现步骤
# 1.读取图片
# 2.缩小图片到64*64,减少运算量
# 3.转换图片为RGB(如果是PNG图片)
# 4.保存为jpg格式
from PIL import ImageFilter
from PIL import Image
import cv2
import os
target = r'C:\Users\wzx13\Documents\code\缩小图片'
testtarget = r'C:\Users\wzx13\Documents\code\训练图片'
outpath = r'C:\Users\wzx13\Documents\code\缩小图片jpg'
# 文件夹操作
files = os.listdir(testtarget)
os.chdir(testtarget)
#如果没有这个文件夹的话,那就新建个文件夹
if(not os.path.exists(outpath)):
os.makedirs(outpath)
# 在读取到的文件夹下面对每个文件进行处理
for file in files:
if(os.path.isfile(file)):
img = Image.open(file)
print(file)
img = img.resize((64,64),Image.ANTIALIAS)
if img.mode != 'RGB':
img = img.convert("RGB")
img.save(os.path.join(outpath,"r"+file+".jpg"))
后面我又做了一下猫狗图片划分,写成了函数,更实用
from PIL import ImageFilter
from PIL import Image
import cv2
import os
re_x = 64
re_y = 64
inputpath = r'D:\dogs-vs-cats\train\train'
outpath_dog = r'C:\Users\wzx13\Documents\CatCheck\train\class1'
outpath_cat = r'C:\Users\wzx13\Documents\CatCheck\train\class2'
def resizeFun(input,diffstr, output1,output2):
files = os.listdir(input)
os.chdir(input)
# 如果没有这个文件夹的话,那就新建个文件夹
if(not os.path.exists(output1)):
os.makedirs(output1)
if(not os.path.exists(output2)):
os.makedirs(output2)
i = 0
for file in files:
if(os.path.isfile(file)):
img = Image.open(file)
print(file)
img = img.resize((re_x, re_x), Image.ANTIALIAS)
if img.mode != 'RGB':
img = img.convert("RGB")
if(file.split('.')[0] != "dog"):
img.save(os.path.join(output2, str(i)+".jpg"))
else:
img.save(os.path.join(output1, str(i)+".jpg"))
i += 1
return
#文件名,区分词,输出区分词对应文件夹,输出区分词不对应的文件夹
resizeFun(inputpath, "dog",outpath_dog,outpath_cat)