当前位置: 首页 > 知识库问答 >
问题:

在python open cv中删除黑色背景并使grabcut输出透明

王成化
2023-03-14

我一直试图使用python OpenCV从grabcut输出中删除黑色背景。

import numpy as np
import cv2

img = cv2.imread(r'myfile_1.png')
mask = np.zeros(img.shape[:2],np.uint8)

bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)

rect = (1,1,665,344)
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)

mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
img = img*mask2[:,:,np.newaxis]

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

上面的代码是我为保存grabcut输出而编写的。请建议,我如何才能去除黑色背景,使其透明?

共有1个答案

伯庆
2023-03-14

我通过使用下面的代码片段实现了这一点。

import cv2
file_name = "grab.png"

src = cv2.imread(file_name, 1)
tmp = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
_,alpha = cv2.threshold(tmp,0,255,cv2.THRESH_BINARY)
b, g, r = cv2.split(src)
rgba = [b,g,r, alpha]
dst = cv2.merge(rgba,4)
cv2.imwrite("test.png", dst)
 类似资料:
  • 问题内容: 我使用PHP和GD库制作缩略图,但是我的代码将png透明度变成了纯黑色,是否有解决方案来改进我的代码? 这是我的PHP缩略图制作者代码: 谢谢 问题答案: 在imagecreatetruecolor()之后:

  • 我没有使用 CSS3。所以我不能使用或属性。如果不使用这些属性,如何使 透明?它应该是此链接中的文本框示例。此处的文本框背景色是透明的。我想做同样的事情,但不使用上面提到的属性。

  • 问题内容: 我没有使用CSS3。所以我不能使用或属性。不使用这些属性,如何使a透明?它应该是此链接中的文本框示例。这里的文本框背景色是透明的。我想做同样的事情,但是不使用上面提到的属性。 问题答案: 不透明度使您透明或透明。在这里查看示例Fiddle。 注意:这些不是CSS3属性

  • 我尝试将背景透明的tiff格式的图像转换为jpeg,以将其大小调整为200x200或1200x1200,但在转换时,背景变为黑色,我希望在转换后保持背景透明或白色 我的代码如下: 这在java JAI中是如何实现的?

  • 我有一些脚本,产生与颜色输出,我需要删除ANSI代码。 输出为(在日志文件中): 我不知道如何把ESC字符放在这里,所以我把放在它的位置。 我把剧本改成: 但是现在它给我(在日志文件中): 我怎样才能删除这个'? 也许有一种方法可以完全禁用整个脚本的着色?

  • 通过使用启用透明背景功能,可以使用自定义图片作为背景。 controller.setTransparentBackground( true );