【发布时间】:2018-06-20 15:15:21
【问题描述】:
我试图在 python 3.5 中使用 cv2.grabcut 函数 -
我使用cv2.GC_INIT_WITH_MASK作为启动方法,但结果看起来很奇怪,并且输出掩码不是我所期望的。
import cv2
import numpy as np
import matplotlib.pyplot as plt
#
img = np.zeros((200,200, 3), 'uint8')
mask = np.zeros((200,200), 'uint8')
cv2.circle(img, (100,100), 50, (255,255,255), -1);
cv2.circle(mask, (100,100), 5, 1, -1)
#
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
out_mask, out_bgdModel, out_fgdModel = cv2.grabCut(img, mask, None, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_MASK)
#
print('opencv', cv2.version) # opencv 3.1.0
#
fig,ax = plt.subplots(1,3)
ax[0].imshow(img)
ax[1].imshow(mask)
ax@987654321@.imshow(out_mask)
plt.show()
尽管将蒙版初始化到给定圆的中心,但它不会捕获完整的形状,而是坚持原始蒙版形状。增加迭代次数没有帮助。
p.s 我以此为例子,我得到了与真实图像相似的结果。
【问题讨论】:
标签: python-3.x opencv3.0