OpenCV наложение изображений

113
31 октября 2019, 08:30

Имеется изображение в формате png нужно подставить его на фон. При этом сохранив прозрачность.

Пример кода на C#

Mat scr= new Mat("С:/1.png");
Mat bg= new Mat("С:/1.jpg");                
Mat clones = new Mat(scr.Size(), MatType.CV_8UC4);
Cv2.AddWeighted(bg, 1, scr, 1, 0, clones );

Адекватного ни чего не выходит.

Есть две картинки. Первая с прозрачным фоном. И вторая соответственно фон

И нужен такой результат

Answer 1

Вроде бы, в документации по opencv все написано.

В вашем случае:

import cv2 as cv
img1 = cv.imread('bg.jpg')
img2 = cv.imread('dice.png')
brows, bcols = img1.shape[:2]
rows,cols,channels = img2.shape
# Ниже я изменил roi, чтобы картинка выводилась посередине, а не в левом верхнем углу
roi = img1[int(brows/2)-int(rows/2):int(brows/2)+int(rows/2), int(bcols/2)- 
int(cols/2):int(bcols/2)+int(cols/2) ]
img2gray = cv.cvtColor(img2,cv.COLOR_BGR2GRAY)
ret, mask = cv.threshold(img2gray, 10, 255, cv.THRESH_BINARY)
mask_inv = cv.bitwise_not(mask)
img1_bg = cv.bitwise_and(roi,roi,mask = mask_inv)
img2_fg = cv.bitwise_and(img2,img2,mask = mask)
dst = cv.add(img1_bg,img2_fg)
img1[int(brows/2)-int(rows/2):int(brows/2)+int(rows/2), int(bcols/2)- 
int(cols/2):int(bcols/2)+int(cols/2) ] = dst
cv.imwrite('res.jpg',img1)

Видно, что есть проблемы с резкостью краев, но дальше уж вы сами.

READ ALSO
Класс или метод для получения html C#

Класс или метод для получения html C#

Давно интересует: а есть ли где-нибудь универсальный способ получения html-кода всей страницы? Ведь на некоторых сайта нужны куки, где-то еще...

129
Перемещение ползунка Slider в пределах SelectionStart и SelectionEnd

Перемещение ползунка Slider в пределах SelectionStart и SelectionEnd

Есть два элемента управления Slider:

119
Что значит рекомендация CA2122 Security::Permissions LinkDemand при анализе C++clr кода?

Что значит рекомендация CA2122 Security::Permissions LinkDemand при анализе C++clr кода?

Я провел анализ своего кода и получил рекомендацию от анализатора (смниже)

197
Правильная сериализация

Правильная сериализация

Познаю науку JSON в C#Действую по статьям и мануалам

161