[英]how to change the color of the resulting foreground to white color after grabcut algorithm?
這是抓取算法的以下代碼。 我想用白色代替原來的顏色得到結果。 這是從鏈接的以下代碼獲得的輸出。
import numpy as np
import cv2
from matplotlib
import pyplot as plt
img = cv2.imread('messi5.jpg')
mask = np.zeros(img.shape[:2],np.uint8)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
rect = (50,50,450,290)
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]
plt.imshow(img),plt.colorbar(),plt.show()
在此行cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)
,您將獲得具有4個不同值的單個通道掩碼,即:
- GC_FGD = 0
- GC_BGD = 1
- GC_PR_FGD = 2
- GC_PR_BGD = 3。
要從該掩碼中獲取二進制掩碼,您需要使用值255
替換GC_FGD = 0
和GC_PR_FGD = 2
,可以通過以下方式完成:
mask2 = np.where((mask==2)|(mask==0), 0, 255).astype('uint8')
跳過乘法步驟,您將二進制掩碼存儲在mask2中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.