如何在抓取算法后将结果前景的颜色更改为白色?

时间:2017-04-17 18:09:52

标签: python opencv image-processing computer-vision

以下是抓取算法的代码。我想得到白色而不是原始颜色的结果forground。以下是从link的以下代码中获得的输出。

enter image description here

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

1 个答案:

答案 0 :(得分:0)

在此行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。
  •   

要从此掩码中获取二进制掩码,您需要将GC_FGD = 0GC_PR_FGD = 2替换为值255,这可以完成:

mask2 = np.where((mask==2)|(mask==0), 0, 255).astype('uint8')

跳过乘法步骤,将二进制掩码存储在mask2中。