源码
import cv2
import numpy as np
img = cv2.imread('cv.jpg')
# 转换为hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 新建掩膜(多个点围起来的多边形)
points = np.array([[(100, 100), (400, 200), (512, 512), (5, 100)]], dtype=np.int32)
mask = np.zeros(img.shape, dtype=np.uint8)
# 填充掩膜为白色
cv2.fillPoly(mask, points, (255, 255, 255))
# 和原始图片进行and操作,获得掩膜区域
res = cv2.bitwise_and(img, mask)
b, g, r = cv2.split(res)
# 新建alpha通道,mask是3通道,shape是(3, 512, 512),alpha需要的是(512,512)并且只取一个通道
alpha = np.rollaxis(mask, 2, 0)[0]
# 合并
merge = cv2.merge((b, g, r, alpha))
cv2.imwrite('clip.png', merge)