Обработка изображений Haskell (HIP) работает с Pixel RGB
Я новичок в этой библиотеке, и мне нужен способ управления (например) Pixel RGB Double, например:
p <- <RGB:(1.0e-2|9.80392156862745e-4|9.900990099009901e-3)>
Я знаю, что вычитание или суммирование влияет на весь RGB
pixel p = p + 1
<RGB:(1.01|1.0009803921568627|1.00990099009901)>
Есть ли способ управлять только красной, синей или зеленой частью вместо одновременного управления тремя цветами?
1 ответ
За
RGB
, объявление данных выглядит так:
data instance Pixel RGB a = PixelRGB a a a
Три поля — это красное, зеленое и синее поля соответственно. Таким образом, вы можете делать все обычные для Haskell вещи, такие как сопоставление с образцом и реконструкция. Например:
redder (PixelRGB r g b) = PixelRGB ((r+1)/2) g b
Объявления данных для других экземпляров этого семейства данных показаны в верхней части главной страницы документации .