2014-12-05 4 views
0

Я стараюсь, чтобы альфа-смесь с двумя изображениями имела альфа-канал в OpenCV.Alpha blending with two transparent images

double r, g, b, a; //source image colors 
double Rd, Gd, Bd, Ad; //destination image colors 

.... 

double result_r = r∗a + Rd*(1−a); 
double result_g = g∗a + Gd*(1−a); 
double result_b = b∗a + Bd*(1−a); 
double result_a = a∗a + Ad*(1−a); 

Это прекрасно работает, если изображение цели непрозрачно. Но мне нужны прозрачные изображения как по источнику, так и по назначению. Существуют ли какие-либо другие методы или функции вычисления OpenCV?

С уважением

ответ

2

Посмотрите на cvFunction addWeighted(). Он выполняет то, что вам нужно Вот link

+0

Спасибо за ваш ответ! Кажется, что функция 'addWeighted()' принимает одинаковые значения альфа для всех пикселей. Могу ли я применять разные значения альфа, принадлежащие src1 и src2 для каждого пикселя? –

+0

Нет, это невозможно с addWeighted(). Вы можете инициализировать элемент mat и использовать multiply(). Но если мой предыдущий ответ работает на ваш первый вопрос, отметьте его как принятый ответ – rafaoc