這是我的形象:

我有 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()
這是最終的面具:

我想要做的是我希望狗的區域與這張圖片中卡車的區域顏色不同,兩者都具有相同的黃色
uj5u.com熱心網友回復:
在您的情況下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
結果:
這是我創建的示例蒙版:
& 
最終結果:

注意:如果您想為每個蒙版標簽固定顏色,您可以創建一個字典并從中參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479041.html
上一篇:如何在python中繪制邏輯矩陣
