获取将被保存到磁盘的numpy图像的二进制表示形式

时间:2018-06-29 07:04:14

标签: python numpy

我正在使用tensorflow,需要一种方法来通过numpy获取图像文件(准确地说是jpg)的二进制内容。明确说明:

Tensorflow使用使用以下机制的tfrecords:

with tf.gfile.GFile(full_path, 'rb') as fid:
    encoded_jpg = fid.read()
encoded_jpg_io = io.BytesIO(encoded_jpg)
image = PIL.Image.open(encoded_jpg_io)

encoded_jpgbytes,而encoded_jpg_io_io.BytesIO(根据文档,内存字节缓冲区)。

我想对实际图像进行一些转换,然后再将其插入tfrecord,并且我想使用numpy

如果我使用PIL读取图像:

im = Image.open(full_path)
image_np = np.array(image)
image_b = image_np.tobytes('F')
encoded_jpg_io2 = io.BytesIO(image_b)

image_b也是bytes,但它们与前一个bytes不匹配。例如:

len(image_b)
  

2180388

len(encoded_jpg)
  

236244

另外,当我得到图像文件的二进制数据时,它取决于文件类型(这意味着如果图像是jpg,即使实际图像是相同的,它们也将不同于图像是png的情况)。

那么,有没有办法从numpy数组中的图像中获取将存储在图像文件中的实际二进制数据

P.S。我知道我可以通过以下方法来解决该问题:加载原始图像,对其进行转换,将其保存到磁盘,然后将其读取为二进制,但是我对此方法不感兴趣。

P.S.2毕竟,这个问题与张量流无关。这就是为什么不包含标签的原因。

0 个答案:

没有答案