我們的原數據:某路徑下的圖片數據(比如*.jpg)
所需目標數據:一個包含batch_size張圖的tensor,大小爲[batch_size, image_height, image_width, channel],tensor的dtype爲tf.float32。
我的圖片比較少,隨便選了9張
要是圖片很多的話,直接用切片方法就ok了
話不多說,直接上程序:
import glob
import scipy.misc
import numpy as np
import tensorflow as tf
#獲取指定目錄下所有圖片,返回一個列表
data = glob.glob(r'F:\picture_data\*.jpg')
print(data)
'''
輸出爲:['F:\\picture_data\\brush1.jpg', 'F:\\picture_data\\girl_1.jpg', 'F:\\picture_data\\Joseph_Mallord_William_Turner_-_Raby_Castle,_the_Seat_of_the_Earl_of_Darlington_-_Walters_3741.jpg', 'F:\\picture_data\\Joseph_Mallord_William_Turner_Self_Portrait_1799.jpg', 'F:\\picture_data\\MDBCaEJVd3JUK0RTTXJlM2dZSXJkMVR2bFBNY05hTzRZN0xqbFBNYm9Yb1JxM3RRVEt1T2lnPT0.jpg', 'F:\\picture_data\\Meisje_met_de_parel.jpg', 'F:\\picture_data\\Slave-ship.jpg', 'F:\\picture_data\\VanGogh-starry_night.jpg', 'F:\\picture_data\\Van_Gogh_Vase_with_Fifteen_Sunflowers.jpg']
'''
#我只有9張圖做示範,圖片數據量大時,採用切片方法即可
#data_batch = data[idx*batch_size: (idx+1)*batch_size]
#get_image函數的作用是:將每張圖片轉化爲指定大小的tensor
#path:路徑
#output_height, output_width:指定目標圖片大小
#scipy.misc.imread函數:直接讀取目標路徑下的圖片,其返回值爲一個3維的像素值
#tf.image.resize_image_with_crop_or_pad作用:輸入圖片像素值及指定圖像大小,輸出指定圖像
#以圖像的幾何中心爲基礎進行crop或pad(pad就是補0)
def get_image(path, output_height, output_width):
image = scipy.misc.imread(path).astype(np.float32)
return tf.image.resize_image_with_crop_or_pad(image, output_height, output_width)
batch = [get_image(batchs, 500, 500) for batchs in data]
print(batch)
'''
輸出爲:
[<tf.Tensor 'control_dependency_3:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_7:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_11:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_15:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_19:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_23:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_27:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_31:0' shape=(500, 500, 3) dtype=float32>, <tf.Tensor 'control_dependency_35:0' shape=(500, 500, 3) dtype=float32>]
'''
#將list轉化爲array
batch_images = np.array(batch)
print(batch_images)
'''
輸出爲:
[<tf.Tensor 'control_dependency_3:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_7:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_11:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_15:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_19:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_23:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_27:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_31:0' shape=(500, 500, 3) dtype=float32>
<tf.Tensor 'control_dependency_35:0' shape=(500, 500, 3) dtype=float32>]
'''