Слой изображения с непрозрачностью поверх другого изображения. - OpenCV
редактировать
Кто-нибудь с подобной проблемой - я нашел другой ответ SOВот с отличным решением на Python, которое использует скорость NumPy.
Пожалуйста, рассмотрите следующую проблему:
У меня есть два изображения, оба одинакового размера. Один из них - красный квадрат с непрозрачными слоями:
И второй, синий квадрат, меньший, чем красный, без непрозрачности, кроме белого, окружающего его.
Я использую привязки Python OpenCV для этого проекта и до сих пор (после прочтения водяных знаковВот У меня есть это:
redSquare = cv2.imread('redSquare.png', cv2.IMREAD_UNCHANGED)
(rH, rW) = redSquare.shape[:2]
blueSquare = cv2.imread('blueSquare.png')
(h, w) = blueSquare.shape[:2]
blueSquare = np.dstack([blueSquare, np.ones((h,w), dtype = 'uint8') * 255])
overlay = np.zeros((h,w,4), dtype = 'uint8')
overlay[0:rH, 0:rW] = redSquare
output = blueSquare .copy()
cv2.addWeighted(overlay, 0.5, output, 0.5, 0, output)
cv2.imwrite('imageAdded.png', output)
Который производит следующий вывод:
Теперь я понимаю, что используя взвешенное сложение, я использую 0,5 каждого, когда мне действительно нужно 1,0 каждого, однако, когда я пытаюсь увеличить вес обоих, увеличивается только один, а другой уменьшается.
Если у кого-то есть понимание того, как я могу достичь этого, предпочтительно в Python, но если вы знаете способ в C ++, я уверен, что смогу воспроизвести его.
Благодарю.