python opencv 两张图叠加

一,原图
这里写图片描述
这里写图片描述

二,源代码


# -*- 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中显示的图颜色这么奇怪
这里写图片描述

猜你喜欢

转载自blog.csdn.net/sxlsxl119/article/details/81508329