2010-02-27 149 views
5

我试图在OpenCV中找到Matlabs“Bwareaopen”函数的相似或等效函数?OpenCV中的Matlab Bwareaopen等价函数

在MatLab Bwareaopen(image,P)从二进制图像中删除所有具有少于P像素的连接组件(对象)。

在我的1频道图像中,我想简单地删除不属于较大区域的小区域?有没有什么微不足道的方法来解决这个问题?

回答

3

看看cvBlobsLib,它有功能可以做你想做的。事实上,我认为,该链接首页上的代码示例完全符合您的需求。 实质上,您可以使用CBlobResult在二进制映像上执行连接组件标签,然后根据您的条件调用Filter排除斑点。

+0

感谢tzaman快速回答和你的权利cvBlobsLib正是我所需要的。 但现在的事情是我不舒服,我可以在我的Xcode项目(iPhone)库中导入这些cvBlobsLib,即使导入了opencv库,我也已经做了很多工作。你认为我可以从库中复制部分代码吗? – Miha 2010-02-27 18:40:04

+0

我自己并没有真正使用cvBlobsLib(或Xcode!),但它是作为源代码发布的,所以你应该能够将所有'.cpp'和'.h'文件添加到你的项目中,'#inc'适当的标题,并从那里采取。 – tzaman 2010-02-27 19:29:40

+0

此外,不要忘记接受/ upvote如果有帮助的答案! :) – tzaman 2010-02-27 19:35:42

0

没有这样的功能,但你可以 1)找到轮廓 2)找到轮廓区域 3)过滤与区域内的所有外部轮廓小于门限 4)创建新的黑色图像 5)绘制左轮廓在它上面 6)掩盖它与原始图像