您的位置:首页 > 其它

tensorflow处理自己的图像数据(不使用队列)

2017-12-19 17:42 405 查看
我们的原数据:某路径下的图片数据(比如*.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>]
'''
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: