Render.ru

Подмена цветовых каналов RGB

ARToman

Пользователь сайта
Рейтинг
2
#1
ПРОБЛЕМА: Помогите в написании фрагмента кода, который мог цветовой канал от одного изображения подменить другим каналом со второго изображения.

ПОЯСНЕНИЕ: Допустим у нас имеется изображение в 1 пиксел, который имеет следующие параметры RGB: (100,100,100), а второе изображение (такого же размера) имеет параметры (50,225,150). Допустим, нам нужно поменять красный канал одного изображения на канал из другого изображения. Конечный результат: первое изображение имеет параметры (50,100,100).

ЦЕЛЬ: Создать фрагмент кода для изображений любого размера.

За помощь заранее спасибо. Жду ваших советов и рекомендаций, а также по возможности фрагмент кода для общего случая
 

Protactinium

Пользователь сайта
Рейтинг
2
#2
Можно сделать так. Открываем два битмапа, создаем третий, в который копируем каналы из второго.
Затем копируем в него те каналы из первого битмапа, для которых флаги chang_... установлены в true.


dir = sysInfo.currentdir
bmp1 = openBitMap (dir + "\bmp1.bmp")
bmp2 = openBitMap (dir + "\bmp2.bmp")
bmp3 = bitmap bmp1.width bmp1.height filename:(dir + "\bmp3.bmp")
change_r = true
change_g = false
change_b = false
for y=1 to bmp1.height do (
bmp1_line = getPixels bmp1 [0,y-1] bmp1.width
bmp3_line = getPixels bmp2 [0,y-1] bmp2.width
for x=1 to bmp1.width do (
if change_r do
bmp3_line[x].r = bmp1_line[x].r
if change_g do
bmp3_line[x].g = bmp1_line[x].g
if change_b do
bmp3_line[x].b = bmp1_line[x].b
) -- end for
setPixels bmp3 [0,y-1] bmp3_line
) -- end for
save bmp3
close bmp1
close bmp2
close bmp3
 
Сверху