一,原图
二,源代码
# -*- coding: utf-8 -*-
import os
import cv2
import numpy as np
import pylab as pl #画图
img1 = cv2.imread('lena.jpg',0)
img2 = cv2.imread('opencv-logo-white.jpg',0)
# 把logo放在左上角,所以我们只关心这一块区域
h= img1.shape[0]
w= img1.shape[1]
rows= img2.shape[0]
cols= img2.shape[1]
roi = img1[int((h-rows)/2):rows+int((h-rows)/2),int((w-cols)/2):cols+int((w-cols)/2)]
# 创建掩膜
img2gray = img2
ret, mask = cv2.threshold(img2gray, 0, 255, cv2.THRESH_OTSU)
mask_inv = cv2.bitwise_not(mask)
# 保留除logo外的背景
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv) #注意此处改成mask=mask的区别
dst = cv2.add(img1_bg, img2) # 进行融合
img1[int((h-rows)/2):rows+int((h-rows)/2),int((w-cols)/2):cols+int((w-cols)/2)] = dst # 融合后放在原图上
pl.figure("img1")
pl.imshow(img1)
pl.show()
三,效果图
读取的是黑白图,而且opencv logo也进行了二值化,但是不知道为啥python中显示的图颜色这么奇怪