Javascript opencv (opencv.js) grabcut GC_INIT_WITH_MASK 问题示例?
2019-09-16
469
我尝试在 opencv.js 上运行 grabcut,并将 grabcut 模式设置为
GC_INIT_WITH_MASK
。但没有得到我需要的结果。我得到的结果与使用
GC_INIT_WITH_RECT
的 grabcut 模式得到的结果相同。
在线上没有任何使用
GC_INIT_WITH_MASK
作为模式调用 opencv.js cv.grabcut 的示例。
因此,我查看了官方 opencv 文档,它提供了一个 python 示例。
其中,
cv.grabCut(img,mask,None,bgdModel,fgdModel,5,cv.GC_INIT_WITH_MASK)
有
None
(相当于 javascript 中的 null)作为第 3 个参数,它需要一个矩形对象,当模式为
INIT_WITH_MASK
时,在这里不传递矩形是有意义的。
但是当我在 javascript 中调用 cv.grabcut 函数时,在那里使用 null。它给出了一个错误,
TypeError: Cannot use 'in' operator to search for 'x' in null
当我传递一个矩形对象时它会运行。但给出的结果与使用
GC_INIT_WITH_RECT
模式相同。
如何使用
INIT_WITH_MASK
模式正确运行它?
2个回答
我遇到了类似的问题,并尝试在没有任何参数的情况下初始化矩形并将其提供给
GrabCut
:
let rect = new cv.Rect();
cv.grabCut(src, mask, rect, bgdModel, fgdModel, 1, cv.GC_INIT_WITH_MASK);
并且它起作用了(我可以看到与我自己的蒙版的区别)。起初,我也没有看到任何区别,但它表明我使用了与之前相同的蒙版,并使用了
GC_INIT_WITH_RECT
选项。
祝你有美好的一天
smfx
2020-05-29
let rect = new cv.Rect(100, 100, 400, 400);
cv.grabCut(src, mask, rect, bgdModel, fgdModel, 1, cv.GC_INIT_WITH_RECT);
Huy Nguyễn
2024-01-10