tensorflow處理自己的圖像數據(不使用隊列)

我們的原數據:某路徑下的圖片數據(比如*.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>]
'''
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章