如何将numpy.ndarray转换为_io.BytesIO

时间:2020-06-28 16:11:50

标签: python numpy tensorflow numpy-ndarray object-detection-api

用于为TensorFlow对象检测模型训练创建训练集。我需要生成一个tfrecord。这里tfrecord由TensorFlow示例组成,其中每个示例都是一个tf.train.Example对象。以下代码显示了如何定义TensorFlow示例对象:

tf_example = tf.train.Example(features=tf.train.Features(feature={
        'image/height': dataset_util.int64_feature(height),
        'image/width': dataset_util.int64_feature(width),
        'image/filename': dataset_util.bytes_feature(filename),
        'image/source_id': dataset_util.bytes_feature(filename),
        'image/encoded': dataset_util.bytes_feature(encoded_jpg),
        'image/format': dataset_util.bytes_feature(image_format),
        'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),
        'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),
        'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),
        'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),
        'image/object/class/text': dataset_util.bytes_list_feature(classes_text),
        'image/object/class/label': dataset_util.int64_list_feature(classes),
    }))

但是问题是我必须以bytes_feature的形式传递每个图像。 encoded_jpg是从文件读取的图像,格式为_io.BytesIO。当我从磁盘读取图像时,这没什么大不了的。但是,由于我要扩充图像数据集,因此我将每个扩充后的图像都设为numpy.ndarray。因此,要么我必须将此numpy.ndarray图像投射到_io.BytesIO,要么必须首先保存图像,以便可以在_io.BytesIO中读取图像,这没有任何意义。因此,如何轻松地将图像转换为所需的格式,而无需将其保存到磁盘。

0 个答案:

没有答案