38. 图像融合

2019-11-12  本文已影响0人  十里江城

opencv的add()和addWeighted()区别在于前者只能叠加,后者可以调节权重

add()法:

# dst = src* alpha + src2 * (1-alpha)
import cv2
import numpy as np
import random

# 人像
img = cv2.imread('face.jpg', 1)
print("shape of img:", img.shape)
# 花朵
img2 = cv2.imread('same_size.png', 1)
print("shape of img2:", img2.shape) 

# 将人像与花朵融合
dst = cv2.add(img, img2)

cv2.imshow('face', img)
cv2.imshow('Mushroom', img2)
cv2.imshow('dst', dst)
cv2.waitKey(0)

效果如下:
相加的两者必须size一致,即shape信息如下:


image.png

人像与蘑菇的相加效果如下:


image.png

addWeighted()法:

# dst = src* alpha + src2 * (1-alpha)
import cv2
import numpy as np
import random

# 人像
img = cv2.imread('face.jpg', 1)
# 花朵
img2 = cv2.imread('1.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1] 

# 提取感兴趣范围ROI
roiH = int(height / 2)
roiW = int(width / 2)
# 抠图
imgROI = img[0 : roiH, 0 : roiW]
img2ROI = img2[0 : roiH, 0 : roiW]

# 将人像左上角即帽子部分与花朵融合,人像权重更大
# 参数:第一幅图像img:imgROI  img的权重:a  第二幅图像img2:img2ROI img2的权重:1-a 重置的偏置项:0
dst = cv2.addWeighted(imgROI, 0.7, img2ROI, 0.3, 0)

cv2.imshow('face', img)
cv2.imshow('flower', img2)
cv2.imshow('dst', dst)
cv2.waitKey(0)

帽顶与花朵的融合效果如下:


image.png
上一篇 下一篇

猜你喜欢

热点阅读