Считать данные изображения обратно (возможно, с помощью scipy.misc.imread) - PullRequest
0 голосов
/ 17 сентября 2018

Этот вопрос, возможно, связан с сохранением и получением массива в форме изображения.Итак, я сохраняю массив двоичных значений в изображение (используя функцию scipy.misc.toimage):

import numpy, random, scipy.misc
data = numpy.array([random.randint(0, 1) for i in range(100)]).reshape(100, 1).astype("b")
image = scipy.misc.toimage(data, cmin=0, cmax=1, mode='1')
image.save("arrayimage.png")

Обратите внимание, что я сохраняю данные в режиме 1 (1-битные пиксели, черный ибелый, хранится с одним пикселем на байт).Теперь, когда я пытаюсь прочитать его обратно как:

data = scipy.misc.imread("arrayimage.png")

, результирующий массив data возвращается как все нули.

Вопрос: есть ли другой способ получить данныеиз изображения, со строгим требованием, чтобы изображение создавалось в режиме 1.Спасибо.

1 Ответ

0 голосов
/ 19 сентября 2018

Я думаю, вы хотите это:

from PIL import Image
import numpy

# Generate boolean data
data=numpy.random.randint(0, 2, size=(100, 1),dtype="bool")

# Convert to PIL image and save as PNG
Image.fromarray(data).convert("1").save("arrayimage.png")

Проверка того, что вы получаете с ImageMagick

identify -verbose arrayimage.png

Пример вывода

Image: arrayimage.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 1x100+0+0
  Units: Undefined
  Colorspace: Gray
  Type: Bilevel                                    <--- Bilevel means boolean
  Base type: Undefined
  Endianess: Undefined
  Depth: 8/1-bit
  Channel depth:
    Gray: 1-bit
  Channel statistics:
    Pixels: 100
    Gray:
      min: 0  (0)
      max: 255 (1)
      mean: 130.05 (0.51)
      standard deviation: 128.117 (0.502418)
      kurtosis: -2.01833
      skewness: -0.0394094
      entropy: 0.999711
  Colors: 2
  Histogram:
        49: (  0,  0,  0) #000000 gray(0)          <--- half the pixels are black
        51: (255,255,255) #FFFFFF gray(255)        <--- half are white
  Colormap entries: 2
  Colormap:
         0: (  0,  0,  0,255) #000000FF graya(0,1)
         1: (255,255,255,255) #FFFFFFFF graya(255,1)
...