最近在学opencv, 初学者。
里面有提到如何将两张图合成一张图, 提供了两个方法
一种是直接通过图片透明度权重进行融合
img1 = cv.imread('ml.png')
img2 = cv.imread('opencv-logo.png')
dst = cv.addWeighted(img1,0.7,img2,0.3,0)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()
合成效果如下, 可以看到两张图片都损失了清晰度, 效果很不理想
同时还提供了另外一种方法, 就是通过掩码的方式, 对两张图片分别提取各自重叠的部分, 然后再进行按位叠加, 这样, 两张图片就完美的结合在一起了。
img1 = cv.imread('messi5.jpeg')
img1 = np.repeat(img1, repeats=2, axis=0) #图片高度不够, 我自行扩充了
# 扩充后shape为(560, 450, 3)
img2 = cv.imread('opencv-logo.png') #shape为(433, 328, 3)
# 因为要把img2叠加到img1上, 所以要保障img1的面积大于img2
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
# 现在创建logo的