Преобразовать в CMYK:
im = Image.open('apple.png').convert('CMYK')
Я бы порекомендовал numpy
(условно импортированный как np
) для работы с данными пикселей.Преобразование между ними простое.
Image
-> ndarray
: np.array(Image)
ndarray
-> Image
: Image.fromarray(ndarray)
Итакпреобразуйте ваше изображение в ndarray
:
import numpy as np
np_image = np.array(im)
Давайте проверим размеры изображения:
print(np_image.shape) # (rows, columns, channels)
(400, 600, 4)
И, наконец, выведите фактические значения пикселей:
print(np_image)
[[[173 185 192 0]
[174 185 192 0]
[173 185 192 0]
...
[203 208 210 0]
[203 209 210 0]
[202 207 209 0]]
...
[[180 194 196 0]
[182 195 198 0]
[185 197 200 0]
...
[198 203 206 0]
[200 206 208 0]
[198 204 205 0]]]
Чтобы получить каждый из отдельных каналов, мы можем использовать numpy
срез.Подобно нарезке списка в Python, но работает по n измерениям.Обозначения могут выглядеть запутанными, но если вы посмотрите на отдельные срезы по размеру, легче разбить.
# [:, :, 0]
# ^ Rows ^ Cols ^ Channel
# The colon alone indicates no slicing, so here we select
# all rows, and then all columns, and then 0 indicates we
# want the first channel from the CMYK channels.
c = np_image[:, :, 0]
m = np_image[:, :, 1]
y = np_image[:, :, 2]
k = np_image[:, :, 3]
Теперь у нас есть четыре ndarray
формы (400, 600) длякаждый из каналов в оригинале CMYK np_image
.