![](/img/trans.png)
[英]how to change the color of the resulting foreground to white color after grabcut algorithm?
[英]how to change the color in grabcut mask based on a class
这是我的形象:
我有 2 类狗和卡车我也有他们的 bbox 坐标所以我想为这个图像创建一个蒙版所以我应用了 grapcut 算法这是我的代码
img=cv2.imread('dog.jpg')
mask=np.zeros(img.shape[:2],np.uint8)
bgModel=np.zeros((1,65),np.float64)
fgModel=np.zeros((1,65),np.float64)
tmpimage=image
masks=[]
for i in recs:
cv2.grabCut(img,mask,i,bgModel,fgModel,10,cv2.GC_INIT_WITH_RECT)
mask2=np.where((mask==2)|(mask==0),0,1).astype('uint8')
masks.append(mask2)
#img=image*mask2[:,:,np.newaxis]
finalmask=np.zeros(img.shape[:2],np.uint8)
for i in range(len(masks)):
finalmask=finalmask+masks[i]
plt.imshow(finalmask)
# plt.colorbar()
#plt.xticks([]),plt.yticks([])
plt.show()
这是最终的面具:
我想要做的是我希望狗的区域与这张图片中卡车的区域颜色不同,两者都具有相同的黄色
在您的情况下finalmask
是一个 2 通道图像。 您从plt.imshow(finalmask)
获得的输出是黄色 -> 255 和紫色 -> 0 的二进制图像。
我创建了一个具有 3 通道的蒙版,并为每个蒙版分配了随机颜色。
代码:
# creating 3-channel mask:
finalmask = np.zeros(img.shape, np.uint8)
for i in range(len(masks)):
# generating random color
# plucked from: https://stackoverflow.com/questions/28999287/generate-random-colors-rgb
color = tuple(np.random.choice(range(256), size=3))
# create another mask to place color in white regions
im = np.zeros(img.shape, np.uint8)
im[masks[i] == 255] = color
# add with final mask
finalmask = finalmask + im
结果:
这是我创建的示例蒙版:
最终结果:
注意:如果您想为每个蒙版标签固定颜色,您可以创建一个字典并从中引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.