opencv不规则掩膜裁剪图片

源码

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)

结果

opencv不规则掩膜裁剪图片_第1张图片

你可能感兴趣的:(python,opencv,python)