图片随便从网上下载,无意冒犯,如有侵权请联系作者会立即删除:
最终效果:
还有待进一步优化!!!
代码如下:
import cv2
import numpy as np
img = cv2.imread('B.jpg',1)
back = cv2.imread('Back.jpg',1)
#双边滤波均匀化照片
img = cv2.bilateralFilter(img,15,35,35)
rows,cols,channels = img.shape
roi = back[0:rows, 0:cols]
#HSV转换
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#创建蒙版
lower_blue = np.array([0,0,0])
upper_blue = np.array([255,235,240])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
#提取目标
mask_inv = cv2.bitwise_not(mask)
back_bg = cv2.bitwise_and(roi, roi, mask = mask_inv)
img_fg = cv2.bitwise_and(img, img, mask = mask)
#合成图片
dst = cv2.add(back_bg, img_fg)
back[0:rows, 0:cols] = dst
cv2.imshow('res',back)
cv2.imshow('mask',mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
“`