OpenCV (Emgu.CV )— компоновка изображений с альфой

Я использую Emgu.CV для выполнения некоторых основных манипуляций с изображениями и композиции. Мои изображения загружаются как Image<Bgra,Byte>.

Вопрос #1:Когда я использую метод Image<,>.Add(), изображения всегда смешиваются вместе, независимо от значения альфа. Вместо этого я бы хотел, чтобы они были наложены друг на друга и использовали включенный альфа-канал, чтобы определить, как изображения должны быть смешаны. Поэтому, если я вызову image1.Add(image2), любые полностью непрозрачные пиксели в изображении2 будут полностью перекрывать пиксели из изображения1, а полупрозрачные -пиксели будут смешиваться на основе значения альфа.

Вот что я пытаюсь сделать в визуальной форме. Есть изображение города с вырезанными «прозрачными отверстиями», а сзади лягушка. Вот как это должно выглядеть:

enter image description here

И это то, что производит openCV.

This is what OpenCV (Emgu.CV) produces when I call "add"

Как я могу получить этот эффект с помощью OpenCV? И будет ли это так же быстро, как вызов Add()?

Вопрос #2:есть ли способ выполнить эту композицию в месте -вместо создания нового изображения при каждом вызове Add()? (напр. image1.AddImageInPlace(image2)изменяет байты image1?)

ПРИМЕЧАНИЕ:Ищу ответы в Emgu.CV, который я использую из-за того, насколько хорошо он справляется с деформацией перспективы.

7
задан roufamatic 17 August 2012 в 18:55
поделиться