我正在使用tensorflow深入学习CNN工作,我想加载图像数据集并按照建议将其类型更改为TFRecord。当我使用PIL库时,它工作正常:
for img_name in os.listdir(class_path):
img_path = class_path + img_name
img = Image.open(img_path)
img = img.resize((250,250))
img_raw = img.tobytes() ### change ndarray to bytes
example = tf.train.Example(features=tf.train.Features(feature={
"label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),
'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))
}))
writer.write(example.SerializeToString())
注意#行,这是必须的,并将其传递给tf.train.Example方法。现在我想使用skimage库进行相同的操作,但我找不到确切的API来做到这一点,只找到skimage.utl.image_as_ubytes,但它将图像转换为8位int样式。所以,我很困惑,如何使用skimage将图像数据转换为二进制模式?接下来是使用skimage的我的snnipets,它失败了
for i in np.arange(0, imageNum):
image = io.imread(imageList[i])
image = transform.resize(image, (32,32,3), 0)
# - 0: Nearest-neighbor
# - 1: Bi-linear (default)
# - 2: Bi-quadratic
# - 3: Bi-cubic
# - 4: Bi-quartic
# - 5: Bi-quintic
image = util.img_as_ubyte(image)#unit8
label = int(labels[i])
example = tf.train.Example(features=tf.train.Features(feature={
'label': tf.train.Feature(int64_list=tf.train.Int64List(value=[label])),
'image_raw': bytes_feature(image)}))
writer.write(example.SerializeToString())