我在C++中找不到这样的例子,所以如果有人能告诉我那会很棒!谢谢。OpenCV抓取:如何结合GC_INIT_WITH_RECT和GC_INIT_WITH_MASK
0
A
回答
1
虽然在文档中没有明确说明,但GC_INIT_WITH_RECT
和GC_INIT_WITH_MASK
标志是互斥的。如果您同时通过grabCut()
,则会优先GC_INIT_WITH_RECT
,而忽略另一个。
为了证明这一点,这里是来自OpenCV的源代码的相关片段:
if(mode == GC_INIT_WITH_RECT)
initMaskWithRect(mask, img.size(), rect);
else // flag == GC_INIT_WITH_MASK
checkMask(img, mask);
2
当您使用GC_INIT_WTH_RECT
模式grabCut()
功能做什么是它设置矩形外的所有东西都变为GC_BGD
,矩形中的所有东西变成GC_PR_FGD
。所以使用这种模式为你初始化掩码。
如果你想使用一个矩形和标记你自己的确定前景/背景,然后使用模式GC_INIT_WITH_MASK
。
创建您自己的掩码,一个零数组,其大小与输入grabCut()
的img
大小相同。将矩形内的所有内容设置为GC_PR_FGD
。外面的一切应该是GC_BGD
。然后如果你知道一个像素是肯定前景的,将它设置为GC_FGD
,如果你知道可能是背景,可以将其设置为GC_PR_BGD
。
GC_
值对应于:
GC_BGD 0
GC_FGD 1
GC_PR_BGD 2
GC_PR_FGD 3
这是我做的,当我想用一个矩形以及普通用户的输入。
+0
我编辑了一些东西。最好使用名称而不是字面值。很好的答案:D – Miki
相关问题
- 1. 如何获得grabCut工作OpenCV的蟒蛇与GC_INIT_WITH_MASK
- 2. 如何将scrapy和htmlunit结合使用以抓取javascript网址
- 3. OpenCV - 抓取帧的函数
- 4. 抓取数据,并结合使用PHP
- 5. 如何保存抓取(抓取,流式)结果?
- 6. 如何使用preg_match_all结合两个抓取的变量?
- 7. 如何抓取搜索引擎结果
- 8. 如何抓取stdClass对象结果
- 9. Javascript抓取。如何处理结果
- 10. 需要结合.getElementsByClass和.getElementsById从网站抓取数据
- 11. 蟒蛇和结合多维列表(opencv)
- 12. OpenCV结合SURF和神经网络
- 13. 如何将openCV中的imshow()和moveWindow()与python结合起来?
- 14. 如何在Ruby中抓取,分析和抓取文件?
- 15. 如何同时抓取和抓取数据?
- 16. 如何编写代码到网络抓取和抓取R
- 17. 如何抓取随机混合输入和段落的内容
- 18. OpenCV 2.4.4 Java - 抓取Webcam图片/流(OSX)
- 19. OpenCV抓取算法示例不工作
- 20. 如何将服务工作人员预抓取与导航中的抓取结合起来?
- 21. 如何抓砌体结束?
- 22. Box2d - 如何抓取和扔对象
- 23. gtkdialog抓取组合键
- 24. 如何混合使用OpenCV 1.0和OpenCV 2.0
- 25. 拆分jSoup抓取结果
- 26. RADIUS和EAP如何结合?
- 27. 如何结合python和robotframework
- 28. 如何结合Date_format和Date_sub
- 29. 如何结合ContentFlow和ColorBox
- 30. 如何结合LINQ和Lambda?
实际上,令人困惑的是,该文档明确表示可以合并它们:“请注意GC_INIT_WITH_RECT和GC_INIT_WITH_MASK可以合并。”但是,它们不能,仅仅是因为GC_INIT_WITH_RECT = 0,所以无法判断GC_INIT_WITH_MASK是否与GC_INIT_WITH_RECT进行了或运算。将矩形外的所有内容定义为掩码中的GC_BGD是“组合”这两种方法的唯一方法。 – Lolo