Сохранить изображение без фона opencv - PullRequest
1 голос
/ 08 апреля 2020

Я хочу создать небольшой скрипт, который создает PNG изображения без фона. Я читаю некоторую информацию, и я не уверен, возможно ли это с opencv. (Извините, если это глупый вопрос, но я новичок ie с этой библиотекой).

Создать изображение легко,

import cv2
import numpy as np

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Drawing a circle
circle = cv2.circle(img,(256,256), 63, (0,0,255), -1)

# 
cv2.imwrite('circle.png',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Но возможно сохранить его без фон? В этом примере можно просто сохранить круг?

Большое спасибо !!!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

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

import cv2
import numpy as np

# Create a black image
img = np.zeros((512,512, 4), np.uint8)

# Drawing a circle
circle = cv2.circle(img, (256,256), 63, (0,0,255, 255), -1)

# 
cv2.imwrite('circle.png',img)
0 голосов
/ 09 апреля 2020
import cv2
import numpy as np

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Drawing a circle
circle = cv2.circle(img, (256,256), 63, (0,0,255), -1)

# Convert circle to grayscale
gray = cv2.cvtColor(circle, cv2.COLOR_BGR2GRAY)

# Threshold to make a mask
mask = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)[1]

# Put mask into alpha channel of Circle
result = np.dstack((circle, mask))

# 
cv2.imwrite('circle.png',result)


enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...