Обработка изображений 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

Объявления данных для других экземпляров этого семейства данных показаны в верхней части главной страницы документации .

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