OpenCV中用GrabCut进行前景检测

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lxiao428/article/details/86515088
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread("img3.jpg")
mask = np.zeros(img.shape[:2], np.uint8) #与图片同大小的掩模
bgdModel = np.zeros((1,65), np.float64)
fgdModel = np.zeros((1,65), np.float64)

rect = (30, 64, 536, 890) #定义矩形区域,区域外的被认为是背景,区域中的部分会识别是背景还是前景
cv2.grabCut(img, mask,rect, bgdModel, fgdModel, 50, cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8')
img = img * mask2[:, :, np.newaxis]
# plt.subplot(121)
plt.imshow(img)
plt.show()

检测结果:

展开阅读全文

没有更多推荐了,返回首页