问题标签 [opencv-contour]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1838 浏览

c++ - OpenCV 2.4.4 中的轮廓/连接组件

我目前正在处理具有大量检测到的轮廓的图像。我的目标是缩小轮廓的数量,最终只得到我正在寻找的轮廓。为此,我根据区域和边界框进行了一系列测试。

现在我在每一步 a 之后drawContours为要保留的轮廓执行 a findContours

我的问题是我只想做findContours一次然后只是擦除我不想要的轮廓,这可能吗?

当前方式:

ETC

想要的方式:

有谁现在如何擦除这些轮廓?

PS:我不关心内部轮廓,我希望所有这些都通过我的测试。


编辑,解决方案(由 limonana 指出)是:contours.erase(contours.begin()+i);

0 投票
1 回答
57669 浏览

python-2.7 - 在 OpenCV 2.4 - python 2.7 中处理轮廓和边界矩形

我正在使用 openCv 和 python,我正在处理结构分析和形状描述符。我找到了这个博客: http: //opencvpython.blogspot.it/2012/06/contours-2-brotherhood.html 这非常有帮助,我尝试使用黑白图像来绘制边界矩形并且它有效。但是现在我从图像中提取,例如黄色,然后我想在上面绘制一个边界矩形。问题是黑白图像不均匀,它有一些噪音,并且代码无法识别整个形状。

原始图像

黑白图像

最终图像

这是代码:

0 投票
1 回答
3216 浏览

opencv - OpenCV - 如何从轮廓中删除小线段?

有没有办法从轮廓中删除小线段?

例如,在此图像中,最大轮廓由绿色指定,其近似值由蓝色指定:

在此处输入图像描述

由于轮廓是一组点,我想我们可以做一些事情来删除红色圆圈中的轮廓段。例如通过检测和去除小线条或小子轮廓或其他方式。但我不知道我该怎么做。

请记住我想在找到轮廓后删除它们,而不是在那之前。你知道我怎样才能删除它们吗?或者有什么想法?

0 投票
2 回答
19562 浏览

python - 获取轮廓Opencv Python内的区域?

我使用了一种自适应阈值技术来创建如下图所示的图片:

在此处输入图像描述

我使用的代码是:

然后,我使用此代码获取轮廓:

我的目标是使用外轮廓内的所有像素生成蒙版,因此我想将对象内的所有像素填充为白色。我怎样才能做到这一点?

我已尝试使用下面的代码创建蒙版,但生成的蒙版似乎与应用自适应阈值后的图像没有什么不同

0 投票
1 回答
1231 浏览

python - 如何在opencv-python中从左到右制作顺序轮廓

在 opencv-python 中使用轮廓分割手写数字后,它给出了一个随机输出轮廓。我如何获得一个从左到右和从上到下的顺序?

0 投票
2 回答
16173 浏览

c++ - openCV 2.4.10 bwlabel - 连接组件

这是matlab的原始代码:

这是我使用openCV的代码

因为现在我有了轮廓,我想使用 bwlabel 函数
1。我认为标记是为了获得连接的 4-8 个对象。你能解释一下标签实际上是什么吗?我会aapriciate任何链接。
2.这篇文章中OpenCV 中的连接组件有人说的是CVblob,有人说的是opecv的cvContourArea,你能解释一下区别吗?什么更适合我的用例?

更新:这是我尝试使用 cvBlobs

0 投票
0 回答
527 浏览

c++ - 使用opencv填充随机形状

我正在尝试创建一个需要填充不规则形状的应用程序,例如嘴唇和眼球。

我试图做的是提取 CLM 点。接下来,我尝试了 OpenCV 中的填充功能,但我无法为随机形状做到这一点。

之后,我尝试了该drawContours功能并使用负厚度进行填充,得到的结果如下。

任何人都可以为获得更好的填充结果和跟踪 CLM 点提供建议吗?

0 投票
1 回答
1526 浏览

android - 在android上绘制凸包

我尝试在图像上绘制凸包。为此,我找到所有轮廓并选择最大区域轮廓。drawContours接受MatOfPointconvexHull给我MatOfInt。我读了这个问题并运行了一些代码。他们中的一些人绘制了凸包,但他们找不到真正的凸点。

我使用下面的代码,但它在最后一行出现运行时错误m.fromArray(hullpoints.get(i));hullpoints.get(i)只有一点,代码无法创建MatOfPoint对象。如何转换为MatOfPointfrom MatOfInt

0 投票
1 回答
3018 浏览

c++ - Opencv findcontours CV_RETR_EXTERNAL not working

I've this image:

EDIT Sorry but I had to remove the images!

I need to extract the contour of the non-black picture, so I used findcontour with the CV_RETR_EXTERNAL parameter, but I obtain this:

Here's the code:

how can I resolve?

0 投票
1 回答
1846 浏览

c++ - 如何在 OpenCV 2.4.10 中过滤掉小轮廓

速览:我对 OpenCV 非常陌生,但想通过它变得更好,但目前我对它真的很不好(显然没有经验或导师......)。我需要制作一个可以从四轴飞行器检测不同物体的程序,唯一的问题是我会出现大量随机的小形状。我从这里借用了代码:http: //opencv-srf.blogspot.com/2011/09/object-detection-tracking-using-contours.html并在从四轴飞行器拍摄的一些图像上进行了尝试。这是程序的结果:http: //imgur.com/IqzNVVr. 它应该只看到顶部附近的银色盒子,但它看到的所有小形状。我从逻辑上知道该怎么做;如果形状的面积低于某个像素量,则不要在形状周围画线......但我不知道该怎么做。我稍微更改了代码并将其包含在下面。我该怎么做呢?(如果您知道任何关于 OpenCV 的深入深入的教程,那就太好了!)

代码: