opencv4.0-python3.7 grabcut算法简单应用

不废话,上代码--------------------

所用示例图像500*700*3

opencv4.0-python3.7 grabcut算法简单应用

import cv2 as cv
import numpy as np
src = cv.imread("C:/Users/Administrator/Desktop/curry.jpg")
cv.imshow("input", src)
print(src.shape[:2])#
mask = np.zeros(src.shape[:2], dtype=np.uint8)#src.shape[:2]=(500,700)
rect = (50,0,580,500)#(50,0)roi边框左上角坐标。(580,500):...右下角坐标
bgdmodel = np.zeros((1,65),np.float64)#后台模型的临时数组。
fgdmodel = np.zeros((1,65),np.float64)#前台模型的临时数组。
cv.grabCut(src,mask,rect,bgdmodel,fgdmodel,7,mode=cv.GC_INIT_WITH_RECT)#7:算法迭代次数;算法收敛前,迭代次数越高效果越好;本例,迭代7次达到最优
mask2 = np.where((mask==1) | (mask==3), 255, 0).astype('uint8')
result = cv.bitwise_and(src,src,mask=mask2)
cv.imshow("result", result)
cv.imwrite("C:/Users/Administrator/Desktop/curry_roi.jpg",result)

opencv4.0-python3.7 grabcut算法简单应用
cv.waitKey(0)
cv.destroyAllWindows()