Преобразование изображения PIL в изображение лыжи?

В моем коде загружено изображение (очень длинное и ненужное, я не буду здесь публиковать), над которым мне нужно поработать с Skimage, чтобы обнаружить пятна в изображении. Однако по какой-то причине все изображения и попытки, которые я использовал, не работают.

PIL в приведенном выше коде изменяет изображение, чтобы объекты, которые я пытаюсь найти, были только белыми (255, 255, 255), а все остальные пиксели - черными. Этот код должен только идентифицировать позиции этих. Я пробовал много разных вещей, чтобы заставить это работать (преобразование их в массив NumPy, не преобразовывая их в ECT NUMPY массив).

Я следую этим инструкциям: http://scikit-image.org/docs/dev/auto_examples/plot_blob.html, но это не учебник, а пример.

Я думаю, что функция rgb2gray является проблематичной, поскольку она возвращает только 0, в то время как print(numpy.array(img)) возвращает значения в диапазоне от 0 до 1, что указывает на то, что потеря информации происходит при вызове rgb2gray.

Вот код, который кажется проблематичным:

img_gray = rgb2gray(numpy.array(img)) # Convert to numpy array for skimage
print(img_gray)
print(numpy.array(img))
img_blobs = blob_doh(img_gray, threshold=0.01, max_sigma=500)
print(img_blobs)

Как я могу это исправить?

РЕДАКТИРОВАТЬ:

Вот что печатают каждое из изображений, массивов и списков:

[[ 0.          0.          0.         ...,  0.          0.          0.        ] #img_gray
 [ 0.          0.00392157  0.01568627 ...,  0.          0.          0.        ]
 [ 0.          0.01176471  0.05882353 ...,  0.          0.          0.        ]
 ..., 
 [ 1.          0.99607843  0.96078431 ...,  0.          0.          0.        ]
 [ 1.          1.          0.98039216 ...,  0.          0.          0.        ]
 [ 1.          1.          0.99215686 ...,  0.          0.          0.        ]]
[[[  0   0   0] #img
  [  0   0   0]
  [  0   0   0]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[  0   0   0] #img
  [  1   1   1]
  [  4   4   4]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[  0   0   0] #img
  [  3   3   3]
  [ 15  15  15]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 ..., 
 [[255 255 255] #img
  [254 254 254]
  [245 245 245]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[255 255 255] #img
  [255 255 255]
  [250 250 250]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[255 255 255]
  [255 255 255]
  [253 253 253]
  ..., 
  [  0   0   0]
  [  0   0   0]
  [  0   0   0]]]
[] #img_blobs

1 ответ

Это будет читать файлы изображений (используя PIL) в scimage:

from skimage import io
img = io.imread("./path/to/image.png")

Поскольку вы уже прочитали изображения и хотели самостоятельно выполнить преобразование данных, вы можете посмотреть, как авторы плагинов сделали это здесь: https://github.com/scikit-image/scikit-image/blob/master/skimage/io/_plugins/pil_plugin.py

Другие вопросы по тегам