1. 程式人生 > >Python---影象讀寫操作(scipy)

Python---影象讀寫操作(scipy)

這裡介紹的僅僅是深度學習中常用的操作:

#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庫進行簡單的影象操作的方法,更詳細的介紹請參考官方說明文件。