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>]
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值