基于OpenCV实现静态单背景色抠图并合成图片

图片随便从网上下载,无意冒犯,如有侵权请联系作者会立即删除:
这里写图片描述
最终效果:
这里写图片描述
还有待进一步优化!!!
代码如下:

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()

“`

猜你喜欢

转载自blog.csdn.net/qq_28414893/article/details/81365226