目录
步骤:
导入库
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)