Python просмотр изображения с одним значением для определения цвета - PullRequest
0 голосов
/ 11 июля 2020

Я только начал работать с skimage и использую его в python .3.6 с skimage-version: 0.17.2 И я начал использовать форму примера: https://scikit-image.org/docs/stable/user_guide/numpy_images.html Там я обнаружил то, чего не понял. Цвет этого изображения определяется только одним единственным значением в массиве numpy. Как это может быть? Это что, не использует RBG или что-то в этом роде? Мой код выглядит так:

from skimage import data

camera = data.camera()
print(camera.shape)
print(camera[0,0])

И результат:

(10, 100)
0.0

Меня сводит с ума 0.0, разве это не должно быть что-то вроде [0,0,0] для белый в этом примере?

Когда я показываю изображение, я получаю следующий результат: изображение, которое я получаю Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 11 июля 2020

Цвет определяется одним значением, потому что это не RGB, а оттенки серого. Таким образом, форма изображения - (512, 512), а не (512, 512, 3). В результате, если вы выберете одну точку белый , она будет [255], а не [255, 255, 255].

Если вы запутались, потому что изображение не черно-белое, это просто потому, что цветовая карта по умолчанию matplotlib - это viridis, то есть зеленый и желтый. Это не меняет значения пикселей, это просто "тема" или фильтр камеры. Если вы изменили цветовую карту на серый, вы получите:

import matplotlib.pyplot as plt

plt.imshow(255 - camera, cmap='Greys')
plt.show()

enter image description here

If you don't specify the colormap, even a random array of pixels will get the yellowish tint:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(4, 4))
plt.imshow(np.random.randint(0, 256, (512, 512)))
plt.show()

введите описание изображения здесь

Но есть одна вещь, которую я не понимаю. Pi c кажется перевернутым. Мне пришлось вычесть значения пикселей из 255, чтобы получить обычную камеру pi c.

...