|
|
|
@ -0,0 +1,26 @@
|
|
|
|
|
import cv2
|
|
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
img=cv2.imread('second.png')
|
|
|
|
|
mask=np.zeros((img.shape[:2]),np.uint8)
|
|
|
|
|
bgdModel=np.zeros((1,65),np.float64)
|
|
|
|
|
fgdModel=np.zeros((1,65),np.float64)
|
|
|
|
|
rect=(81,189,587,1041)
|
|
|
|
|
#这里计算了5次
|
|
|
|
|
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)
|
|
|
|
|
#关于where函数第一个参数是条件,满足条件的话赋值为0,否则是1。如果只有第一个参数的话返回满足条件元素的坐标。
|
|
|
|
|
mask2=np.where((mask==2)|(mask==0),0,1).astype('uint8')
|
|
|
|
|
#mask2就是这样固定的
|
|
|
|
|
plt.subplot(1,2,1)
|
|
|
|
|
plt.imshow(img)
|
|
|
|
|
plt.title('original image ')
|
|
|
|
|
plt.xticks([])
|
|
|
|
|
plt.yticks([])
|
|
|
|
|
plt.subplot(1,2,2)
|
|
|
|
|
#这里的img也是固定的。
|
|
|
|
|
img=img*mask2[:,:,np.newaxis]
|
|
|
|
|
plt.imshow(img)
|
|
|
|
|
plt.title('target image')
|
|
|
|
|
plt.xticks([])
|
|
|
|
|
plt.yticks([])
|
|
|
|
|
plt.show()
|