问题标签 [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 回答
5637 浏览

android - 如何使用 createBackgroundSubtractorMOG2

我正在使用 OpenCV4Android 3.1.0 版,我想删除从 Android 相机拍摄的每一帧的背景。我提到了一些帖子,我的理解是,因为应该从我应该使用的非静态背景“Android 相机”中删除背景createBackgroundSubtractorMOG2

根据一个例子,我正在使用createBackgroundSubtractorMOG2如下代码所示。但是在运行时,无论从相机检索到的帧中的背景如何变化,我都会得到掩码fgmask始终包含一个白色图像。

请让我知道如何使用createBackgroundSubtractorMOG2

代码

0 投票
0 回答
1008 浏览

python - OpenCV:在检测到的运动上绘制边界

我是 OpenCV 的新手,决定学习它,但编写了一个小程序来检测运动并在对象上绘制一个边界框。

我从一个相当简单的方法开始,它简单地计算两帧之间的差异,找到轮廓并在对象周围绘制一个简单的矩形。这在一段时间内达到了目的,但它无法在多个对象弹出时自主跟踪它们。我必须手动更改我的参数才能跟踪n个对象。

所以我决定改变我的方法,改用BackgroundSubtractorMOG. 这种方法更适合我想要完成的工作,但我目前唯一遇到的问题是如何在应用后绘制检测到的对象的轮廓BackgroundSubtractorMOG。我不再想要矩形,而是希望它围绕对象的边框绘制。

0 投票
1 回答
1201 浏览

opencv - 如何获取轮廓的坐标

我正在使用 OpenCV4Android 2.4.11 版,并且正在检测相机检索到的帧中的任何矩形形状。如下图 1 所示,我在检测到的对象周围绘制了一个黑色轮廓,我想要做的是,获取绘制轮廓的所有坐标,该坐标仅以黑色绘制。我尝试的是,如下面的code_1所示,我得到最大轮廓和最大轮廓的索引,并将它们分别保存在“largestContour”和“largest_contour_index”中。然后,我使用

然后我将最大轮廓的点传递给 FindCorners 类,因为我想找到用黑色绘制的轮廓的特定坐标,如下所示:

以下代码行:

应该给我较小的 x 坐标、最小的 y 坐标、最大的 x 坐标和最大的 y 坐标。但是当我围绕从“this.mFindCorners.getCords();”得到的坐标画一个圆圈时 我在下面的 image_2 中得到了类似的东西,这只是 BoundingRect 的角落。

实际上我不希望 boundingRect 中的任何坐标我想访问在黑色检测到的对象周围绘制的轮廓的坐标

请让我知道如何获取轮廓本身的坐标?

代码_1

找角

}

图像_1

在此处输入图像描述

图像_2

在此处输入图像描述

更新 我不想拥有边界矩形的坐标,我想要的是黑色轮廓的确切坐标。如图 3 所示,我从代码中获得的坐标是红色和黄色圆圈所在的位置..但我正在寻找能够访问黑线“轮廓”的坐标,因此我可以在其上绘制一些圆圈,如图所示图像_3。绿色的点只是为了告诉你我想要的坐标。

图像_3

在此处输入图像描述

0 投票
1 回答
1186 浏览

c++ - OpenCV——如何从低质量的灰度图像中获得更好的手部轮廓?

我需要从手部图像中获取轮廓,通常我通过 4 个步骤处理图像:

  1. 从 3 个通道到 1 个通道获取原始 RGB 灰度图像:

    /li>
  2. 使用高斯模糊过滤灰度图像:

    /li>
  3. 二值灰度图像,我按高度分割图像,通常我将图像按高度分割为 6 张图像,然后我对每张图像进行阈值处理:

    /li>
  4. 使用 findcontour 获得最大面积轮廓:

    /li>

通常它工作得很好, 但对于一些低质量的灰度图像,它不起作用,如下所示:

低质量灰色图像1

低质量灰色图像2

完整的代码在这里:

有人可以帮我获得更好的手部轮廓结果吗?谢谢!!!

0 投票
0 回答
939 浏览

android - OpenCV FindContours 在 android 上找不到轮廓

我正在尝试查找图像的轮廓,使用 OpenCV on android build with Xamarin(有关以下版本的详细信息)。

即使使用如下所示的伪图像,我也无法让 FindCountours 函数返回任何轮廓(列表为空)。另一个问题是层次对象中有一个轮廓。

它在 Windows 上从 Python 运行时有效。

有谁知道可能是什么原因?

版本信息:

  • OpenCV-3.1.0
  • 安卓 5.1 API 22

找到了解决方案: 轮廓列表必须是JavaList,即。

0 投票
1 回答
161 浏览

c++ - 轮廓的偏度

嘿,我用图像矩计算了轮廓的方向。结果,我得到了一个在 -pi 和 pi 之间定义的角度。但是这个角度在 -pi 和 pi 处具有不确定性。所以我的想法是用三阶图像时刻计算偏度,但我真的不知道该怎么做。在这里使用图像时刻跟踪对象方向,作者也是这样做的。但我不太明白他是如何计算偏度的,因为他/她使用了我不知道的 matlab 函数:-/

有人知道更多关于这个问题的信息吗?我将非常感谢您的帮助!!!!此致

0 投票
1 回答
775 浏览

python - drawContours 无法在 OpenCV 3.1.0 中创建正确的蒙版

我想使用 OpenCV 拆分图像的字符以训练 Tesseract 模型。

我正在使用3.1.0版本(因为 Macports 升级 - meh..),并且文档(用于 Python)仍然不是很清楚/记录良好。

这是我所做的:

  1. 二值化图像以便准备好找到轮廓
  2. 找到轮廓(有效 - 至少我得到非零结果)
  3. 对于每个轮廓:

    1. 创建一个掩码(这可能会失败 - 得到零)
    2. 使用蒙版从原始图像中提取部分(应该可以工作,但蒙版失败,所以这还不行)

新版本的 OpenCV 也有一些不同的语法,所以有时这让它变得更加棘手。

这是我的代码:

据我所知,蒙版应该与原始图像的大小相同。但它也应该具有相同的形状吗?例如,我的图像是 640x74,但我创建掩码矩阵的方式是 1x47360。也许这就是它失败的原因...... (但不会抛出任何错误)

任何帮助表示赞赏!

0 投票
1 回答
856 浏览

python - 如何在 SimpleCV 或 opencv 中计算边界内的标记区域

我有这张图片:

图片

在这里,我有一个绿色背景的图像和一个用红线标记的区域。我想计算标记部分相对于图像的面积。

我正在裁剪图像以移除绿色背景并计算裁剪图像的面积。从这里我不知道如何进行。

我注意到Contour可以用于此,但问题是在这种情况下如何绘制轮廓。

我想如果我可以创建轮廓并用一些颜色填充标记区域,我可以从整个(裁剪)图像中减去它并获得两个区域。

0 投票
1 回答
790 浏览

opencv - 检测边缘(连接边缘)并找到边缘长度和连接分量回转半径

原始图像 我正在尝试检测此图像中连接边界的集群。我需要找到这些边缘的长度以及各个集群的回转半径。我正在使用 opencv 2.4.13。我使用以下代码使用轮廓检测​​质量簇。

问题是公共共享边的轮廓变得不同,逻辑上它们应该属于同一个集群。我给出的以下轮廓图像。 在一定长度以上提取的轮廓

我们可以看到许多具有相同共享边的轮廓被分别视为不同的轮廓。我希望它们成为相同边界集群的一部分。还建议我如何检测边界的长度和回转半径。请帮忙。

0 投票
1 回答
2787 浏览

java - 使用 openCv 查找在 java 中检查的轮廓

我希望我的程序输入图像(附件) 输入 并输出如下字符串:

  • 问题 1:选中框 2
  • 问题 2:选中框 1
  • 问题 3:选中框 3
  • 问题 4:选中框 2

等等......(我对每张图片的问题都有多少)

我可以用这个程序简单地找到空框:

这是我的程序的输出:(附图) 输出

谢谢您的帮助 !