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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jingtaoqian8521/article/details/86725269

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

所用示例图像500*700*3

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)


cv.waitKey(0)
cv.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/jingtaoqian8521/article/details/86725269