使用OpenCV保存无背景的图像。

4

我想创建一个小脚本,用于创建没有背景的png图像。我已经阅读了一些信息,但不确定是否可以使用opencv实现这一点(如果这是一个愚蠢的问题,对不起,因为我对这个库很陌生)。

创建一张图片很容易,

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()

但是,有没有可能去掉背景只保存圆形?

非常感谢!!!


https://dev59.com/oVkR5IYBdhLWcg3w_CD- - Shkar Sardar
1
你所说的“没有背景”是什么意思?是指透明吗?即使透明也算是一种背景。如果你想要一个红色圆形在透明背景上,可以为圆形制作一个二进制掩模,并将其放入红色圆形图像的 alpha 通道中。 - fmw42
2个回答

4
我已在下面的代码中为图像添加了透明度通道(或层)。这将使背景看起来没有任何东西。
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)

2
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接