背景替换(opencv、python),照片、证件照的背景替换(抠图)

步骤:

导入库

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import cv2

%matplotlib inline

1、读入将要抠图的图片

image = mpimg.imread('images/car_green_screen.jpg')
image_copy=np.copy(image)

在这里插入图片描述

2、create一个带颜色域的mask

lower_green = np.array([0,80,0]) 
upper_green = np.array([80,255,80])
mask = cv2.inRange(image, lower_green, upper_green)

在这里插入图片描述

3、通过mask使得原图只显示汽车,即抠出所需要的部分

masked_image = np.copy(image)
masked_image[mask != 0] = [0, 0, 0]

在这里插入图片描述

4、将要替换掉的图像resize或裁剪到和上述图片一样的大小

background_image = mpimg.imread('images/sky.jpg')
crop_background_image = background_image[0:450,0:660]

以下为裁剪

原图:
在这里插入图片描述

裁剪后:
在这里插入图片描述

5、将该图片预留出将要重叠上的部分,即将mask部分改为(0,0,0)

crop_background = np.copy(crop_background_image)
crop_background[mask == 0] = [0,0,0]

在这里插入图片描述

6、通过和运算使得两部分图片mask部分替换

complete_image = masked_image + crop_background

在这里插入图片描述

7、最后保存图片

mpimg.imsave('skyandcar.jpg',complete_image)

猜你喜欢

转载自blog.csdn.net/weixin_41729258/article/details/106146299