Я пытаюсь сделать процедуру, которая использует изображение-карту, чтобы изменить цвет изображения в соответствии с диапазоном. Как это:Изменение цвета изображения в соответствии с диапазонами?
If the sum of the RGB channels for one pixel = 0 to 181 then the color would be (0 51 76)
If the sum = 182 to 363 then the color would be (217 26 33)
If the sum = 364 to 545 then the color would be (112 150 158)
If the sum = 546 to 765 then the color would be (252 227 166)
Итак, вот что я до сих пор:
(define (sum p)
(image-map
(lambda (c)
(+ (color-ref c 'red) (color-ref c 'green) (color-ref c 'blue)))
p))
(define color-range
(lambda (c)
(cond
[(< (sum c) 181) (color 0 51 76)]
[(and (>= (sum c) 182) (<= (sum c) 363)) (color 217 26 33)]
[(and (>= (sum c) 364) (<= (sum c) 545)) (color 112 150 158)]
[(and (>= (sum c) 546) (<= (sum c) 765)) (color 252 227 166)])))
Итак, я сделал вспомогательную функцию для вычисления суммы каждого пикселя. Когда я бегу цветовой диапазон, я получаю ошибку о том, что:
Exception в изображении-карте: # [цвет 255 255 255] не правильный тип, ожидаемый образ
Помощь?
Спасибо!
Я думаю, что я пытаюсь получить пиксель на сумму, и это то, что вы сделали, не так ли? Итак, если я ищу пиксель, я не должен использовать карту изображения, потому что это возвращает изображение, верно? – 2013-03-07 02:20:37
Правильно, и не забудьте проверить каждую процедуру помощника отдельно, прежде чем включать их в основную процедуру, которая реализует решение –