在skimage中,如何将图像数组转换为二进制类型?

时间:2017-10-25 03:34:16

标签: tensorflow python-imaging-library scikit-image tfrecord

我正在使用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())

0 个答案:

没有答案