Для компьютеров изображения - это просто сетка чисел.Есть несколько способов «добавить» сетку чисел.В этом ответе я объясню три способа добавления изображения «abc» на изображение «xyz».Это очень простая задача a + b = c.Но это работает, только если изображения имеют одинаковую форму.Для работы с изображениями различной формы необходимо изменить только определенные части изображений с помощью кода image[y: y+height, x: x+width]
.
. Для начала давайте взглянем на созданные мной образцы изображений.Изображение xyz имеет вертикальные полосы и форму 600 600.Полоски имеют цвет 123 (где 0 - черный, а 255 - белый).
Далее я создал другое изображение для добавления поверх изображения хуг .Это изображение называется image abc .Он имеет форму 300 300.Горизонтальные полосы также имеют цвет 123:
Вы можете «добавить» изображения, заменив пиксели в xyz изображение с пикселями в abc изображение:
x,y = 123,123
replace = xyz.copy()
replace[y: y + abc_size, x: x + abc_size] = abc
cv2.imshow('replace', replace)
Вы можете «добавить» изображения, суммируя массивы,Это приведет к тому, что в некоторых местах изображение будет ярче, чем любое из исходных изображений.Суммирование даст странные результаты, если значения выходят за пределы диапазона (0, 255).
x,y = 123,123
added = xyz.copy()
added[y: y + abc_size, x: x + abc_size] += abc
cv2.imshow('added', added)
Если вы хотите усреднить пикселина изображениях вы можете использовать функцию cv2.addWeighted ().
background = np.zeros_like(xyz)
x,y = 123,123
background[y: y + abc_size, x: x + abc_size] = abc
add_weighted = cv2.addWeighted(background, .5, xyz, .5, 1)
cv2.imshow('add_weighted', add_weighted)