这里介绍的仅仅是深度学习中常用的操作:
#read and save images operations
import os
import glob
import random
from scipy import misc
import numpy as np
import time
image_dir = r"C:\Users\Administrator\Desktop";
file_glob = os.path.join(image_dir,"images","training","*.jpg")
file_list = []
#将符合条件的jpg文件路径读取到file_list中去
file_list.extend(glob.glob(file_glob))
print(file_list[::])
print("-----------------------------------------------------------")
#将file_list中的文件路径进行乱序,打乱顺序
random.shuffle(file_list)
print(file_list[::])
def read_andtransform(filename):
image = misc.imread(filename)
#将图像尺寸矫正到[100,100]大小
resize_image = misc.imresize(image,[220,220],interp = "nearest", mode = "RGB")
#保存图像操作1
#使用imsave直接保存image对象
#path = "C:\\Users\\Administrator\\Desktop\\images\\res\\"+str(int(time.time())) + ".jpg"
#misc.imsave(path, resize_image)
#将resize_image对象转为数组array返回
return np.array(resize_image)
#将file_list中所有图像文件读取到数组images中
images = np.array([read_andtransform(filename) for filename in file_list])
#保存images中所有图像
for i in range(len(images)):
print(images[i].shape)
#将array保存为image对象的方法:
#使用misc.toimage方法将array转为image对象
img = misc.toimage(images[i])
#使用imsave将image对象保存
misc.imsave("C:\\Users\\Administrator\\Desktop\\images\\res\\"+str((time.time())) + ".jpg",img)
如果使用Pillow,简单的图像读写操作如下:
import numpy as np
import os
from PIL import Image
#使用open方法打开图像
img = Image.open("C:\\Users\\Administrator\\Desktop\\images\\test.jpg")
#对图像进行简单操作
#定义图像像素反相效果函数
def reverse(x):
return 255 - x
#使用eval方法对图像进行反相操作
img1 = Image.eval(img,reverse)
#使用save进行保存
img1.save("C:\\Users\\Administrator\\Desktop\\images\\res.jpg")
#获取[x,y]位置像素rgb
x=10
y=10
rgb = img.getpixel((x,y))
#对[x,y]处像素赋值
rgb_new = (100,200,255)
img.putpixel((x,y),rgb_new)
#获取rgb三通道像素数组
channels = img.split()
r,g,b = channels
#将rgb三通道融合成新image
img_new = Image.merge("RGB",(r,g,b))
以上就是使用Scipy和PILLOW库进行简单的图像操作的方法,更详细的介绍请参考官方说明文档。