首页 > 解决方案 > Javascript opencv (opencv.js) 抓取 GC_INIT_WITH_MASK 问题示例?

问题描述

我正在尝试在 opencv.js 上运行抓取模式,并将抓取模式设置为GC_INIT_WITH_MASK. 但没有得到我需要的结果。我得到的结果与使用抓取模式 as 得到的结果相同GC_INIT_WITH_RECT

没有任何在线示例调用 opencv.js cv.grabcutGC_INIT_WITH_MASK作为模式。

所以,我检查了提供 python 示例的官方 opencv 文档。

在那里面,

cv.grabCut(img,mask,None,bgdModel,fgdModel,5,cv.GC_INIT_WITH_MASK)

None(相当于javascript中的null)作为第三个参数,它需要一个矩形对象,并且当模式为时不在这里传递一个矩形是有意义的INIT_WITH_MASK

但是当我在那个地方使用 null 在javascript中调用 cv.grabcut 函数时。它给出了一个错误,

TypeError:无法使用“in”运算符在 null 中搜索“x”

当我传递一个矩形对象时它运行。GC_INIT_WITH_RECT但给出与使用模式相同的结果。

如何使用INIT_WITH_MASK模式正确运行它?

标签: javascriptopencvimage-processing

解决方案


我遇到了类似的问题,并尝试在没有任何参数的情况下初始化矩形并将其提供给GrabCut

 let rect = new cv.Rect();
 cv.grabCut(src, mask, rect, bgdModel, fgdModel, 1, cv.GC_INIT_WITH_MASK);

它有效(我可以看到我自己的面具的不同之处)。起初,我也没有看到任何区别,但它表明我使用了与以前相同的掩码GC_INIT_WITH_RECT选项。

祝你有美好的一天


推荐阅读