Я использую Emgu.CV для выполнения некоторых основных манипуляций с изображениями и композиции. Мои изображения загружаются как Image<Bgra,Byte>
.
Вопрос #1:Когда я использую метод Image<,>.Add()
, изображения всегда смешиваются вместе, независимо от значения альфа. Вместо этого я бы хотел, чтобы они были наложены друг на друга и использовали включенный альфа-канал, чтобы определить, как изображения должны быть смешаны. Поэтому, если я вызову image1.Add(image2)
, любые полностью непрозрачные пиксели в изображении2 будут полностью перекрывать пиксели из изображения1, а полупрозрачные -пиксели будут смешиваться на основе значения альфа.
Вот что я пытаюсь сделать в визуальной форме. Есть изображение города с вырезанными «прозрачными отверстиями», а сзади лягушка. Вот как это должно выглядеть:
И это то, что производит openCV.
Как я могу получить этот эффект с помощью OpenCV? И будет ли это так же быстро, как вызов Add()
?
Вопрос #2:есть ли способ выполнить эту композицию в месте -вместо создания нового изображения при каждом вызове Add()
? (напр. image1.AddImageInPlace(image2)
изменяет байты image1
?)
ПРИМЕЧАНИЕ:Ищу ответы в Emgu.CV, который я использую из-за того, насколько хорошо он справляется с деформацией перспективы.