2021.4.4 预处理图像数据
step1:将数据进行预处理,数据增强。(随机剪裁、旋转等)
- 随机剪裁
- 存图路径
- 存图名称
- 有些图不裁减
# -*- coding: utf-8 -*-
import os
import random
from PIL import Image
def read_path(file_pathname):
#遍历该目录下的所有图片文件
for filename in os.listdir(file_pathname):
num = int(filename[-5]) #荧光相片不进行裁减(1-2.bmp、4-2.bmp)
#这里的filename[-5]要加int(),不然默认为字符串(str)形式,在后续判断时,为布尔值判断!!!!!
"""filename[-5]代表了是否为荧光照片"""
if (num == 1): #对非荧光照片进行裁减
im= Image.open(file_pathname+'/'+filename)
img_size = im.size
m = img_size[0] # 读取图片的宽度
n = img_size[1] # 读取图片的高度
w = 256 # 设置你要裁剪的小图的宽度
h = 256 # 设置你要裁剪的小图的高度
for i in range(1, 5): # 裁剪为100张随机的小图
x = random.randint(0, m - w) # 裁剪起点的x坐标范围
y = random.randint(0, n - h) # 裁剪起点的y坐标范围
stem, suffix = os.path.splitext(filename)
name = stem #重新命名,去掉后缀(.bmp),方便后续命名
region = im.crop((x, y, x + w, y + h)) # 裁剪区域
region.save(after_path+"/"+name + "_" + str(i) + ".jpg") # str(i)是裁剪后的编号,此处是1到100
"""直接保存在工作路径region.save("1_1_"+str(i)+".jpg")"""
"""保存到指定路径【...(路径)+'/'+...(文件名)】"""
else:
continue
#这里是continue,如果是break,只要出现了(i!=1时循环完全结束)
before_path="/home/xyjin/PycharmProjects/data_mining/rock_test"
after_path="/home/xyjin/PycharmProjects/data_mining/rock_processed_test"
read_path(before_path)
- 代码改进–把切割过程写成函数!
step2:制作自己的数据集,后续放入神经网络中训练。
出现的问题:把win10下的excel文件导入到Ubuntu20.04中,出现乱码。
原因:windows下文本编码为GBK,gedit默认为UTF-8所以中文会乱码
解决方法
解决之后: