Сделайте черные границы вокруг пользовательской области, представляющей интерес, прозрачными

#python #numpy #opencv #image-processing

#python #numpy #opencv #обработка изображений

Вопрос:

Я обрабатываю изображения, чтобы получить пользовательскую область, представляющую интерес, после получения желаемой области остальная часть изображения находится в черных границах. Я хочу сделать черные границы прозрачными.

Я использую этот код для получения моей рентабельности инвестиций:

 # preprocess
mask = np.zeros(frame.shape, dtype=np.uint8)
roi_corners = np.array([[(850,0), (220,1500), (2250,1500),(1450,0)]], dtype=np.int32)
channel_count = frame.shape[2]
ignore_mask_color = (255,)*channel_count
cv2.fillConvexPoly(mask, roi_corners, ignore_mask_color)
frame = cv2.bitwise_and(frame, mask)
  

Это пример моих изображений после предварительной обработки:
введите описание изображения здесь

Любая помощь приветствуется.

Комментарии:

1. Изображение всегда будет иметь форму прямоугольника. Таким образом, вы не сможете обрезать в любом неправильном формате. Однако вы можете заменить черный цвет на 0 alpha, чтобы он стал прозрачным.

2. делает ли изменение пикселей прозрачными то же самое, что и изменение их на белый?

3. Нет, прозрачный не является белым. Если за прозрачным изображением есть что-то синее, вы увидите сквозь него синий цвет, тогда как с белым вы этого не увидите. Прозрачность полезнее белого, потому что это целый отдельный канал, который сообщает для каждого пикселя, виден он или нет. Если вы используете белый цвет, вы не сможете отличить границы от белых пикселей, естественно встречающихся в другом месте вашего изображения.