alpha到trimap(python)
import os
import numpy as np
import cv2
def random_dilate(alpha, low=2, high=3, mode='constant'):
iterations = np.random.randint(1, 2)
erode_ksize = np.random.randint(low=low, high=high)
dilate_ksize = np.random.randint(low=low, high=high)
erode_kernel = cv2.getStructuringElement(
cv2.MORPH_ELLIPSE, (erode_ksize, erode_ksize))
dilate_kernel = cv2.getStructuringElement(
cv2.MORPH_ELLIPSE, (dilate_ksize, dilate_ksize))
alpha_eroded = cv2.erode(alpha, erode_kernel, iterations=iterations)
alpha_dilated = cv2.dilate(alpha, dilate_kernel, iterations=iterations)
if mode == 'constant':
alpha_noise = 128 * np.ones_like(alpha)
alpha_noise[alpha_eroded >= 225] = 255
alpha_noise[alpha_dilated <= 128] = 0
else:
value = np.random.randint(low=100, high=255)
alpha_noise = value * ((alpha_dilated - alpha_eroded) / 255.)
alpha_noise += alpha_eroded
return alpha_noise