问题标签 [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 投票
2 回答
12669 浏览

python - DrawContours()不工作opencv python

我正在研究在 opencv python 中查找和绘制轮廓的示例。但是当我运行代码时,我只看到一个没有绘制轮廓的深色窗口。我不知道我哪里错了。代码是:

test.png只是黑色背景中的白色矩形。

任何帮助,将不胜感激。

编辑:我正在使用 Opencv 3.0.0 和 Python 2.7

0 投票
3 回答
5946 浏览

opencv - 如何从使用 OpenCV 的移动相机拍摄的图像中去除阴影?

我需要在图像中找到最大的矩形,但是当我找到轮廓时,阴影会成为轮廓的一部分。

任何关于如何删除/最小化阴影的建议。

原始图像

在此处输入图像描述

带轮廓的图像

在此处输入图像描述

0 投票
1 回答
3882 浏览

python - opencv查找并保存知道最大的内部轮廓

如何使用 python opencv 绘制/保存图像的内部轮廓?我知道如何获得最大的轮廓,我想保存它和内孔,它们也是轮廓。

原图: 在此处输入图像描述

0 投票
1 回答
577 浏览

python - 如何将轮廓转换为实心圆?

是否有机会将框架中的所有轮廓转换为实心圆?

让我解释一下,我的视频有很多小物体,使用 Mosse 跟踪很难检测到,因为我的物体改变了它的形式。所以我有一个想法,将所有找到的轮廓更改为实心圆圈,这意味着,转换此图像上找到的所有这些对象:

在此处输入图像描述

像这样:

在此处输入图像描述

我正在使用 python 和 Opencv。

0 投票
2 回答
2170 浏览

opencv - 如何在opencv中跨特定颜色绘制边界?

假设我有一个图像。我基本上想在我想要的特定颜色上划出边界。我知道该颜色的 hsv 最小和最大标量值。但我不知道如何进一步进行。

inrange 函数运行良好,但我无法在白色范围内绘制边界(我的意思是指定范围内的任何像素)

0 投票
1 回答
715 浏览

android - OpenCV android:具有多个不同大小矩形的图像的霍夫变换矩形识别

所以大家,我关于stackoverflow的第一个问题。我已经使用 android 和 openCV 工作了一个月,并且能够成功实现模板匹配。现在,下一个任务是检测图像中的所有矩形并获取坐标(我实际上想要每个矩形的颜色)以用于研究目的。请帮忙。我尝试使用带有精明边缘检测的霍夫变换,但不幸的是它没有检测到现在主要关注的小矩形。

谢谢!![![必须检测所有矩形,小的和大的

0 投票
1 回答
506 浏览

opencv - drawContours 奇怪的行为?

我从二进制图像中过滤小斑点(面积小于阈值的轮廓)。掩码是二值图像。

如果我评论行

然后当我用 0 个小斑点填充后保存蒙版时,我会得到奇怪的结果。

也不明白为什么取消注释行时它会起作用,因为之后

掩码逻辑上应与输入掩码相同(图像周围的 1 个像素边界除外)

我得到了什么 在此处输入图像描述 在此处输入图像描述

我想要的是

在此处输入图像描述 在此处输入图像描述

所以我不明白当我填充坏轮廓时,drawContours 是否会破坏初始蒙版?

0 投票
0 回答
4417 浏览

c++ - OpenCV:处理轮廓向量索引

使用函数 convexityDefects 从二进制图像中获取 blob 并创建一个向量,其中包含我手周围的所有点。这个向量总是从我的斑点上最高 Y 位置的点开始,这干扰了我在每个手指上运行 K-Curvature 以确定准确手指位置的能力。

我考虑过重新洗牌向量,以便向量的开头远离我手上手指的位置。问题是这很难实现,因为我没有有效的方法来选择手头上的一个点来开始对点进行重新排序。你有什么建议可以提供简单的方法来解决这个问题吗?我的目标是在这个数组开始的约 30 点内没有指尖。

0 投票
1 回答
1695 浏览

opencv - OpenCV findContour 方法返回“双倍”轮廓

我有一些非常简单的图像,我想从中提取最长的轮廓。

示例图像如下所示:

轮廓查找的示例图像

我正在使用与OpenCV 教程页面完全相同的示例代码。有了一个差异,我将阈值设置为一个固定数字,即 100。

主线是这一行:

在我调用上述函数后,我遍历找到的轮廓并检查哪一个是最长的,然后我保存最长的一个。在最长的情况下,我的意思是哪一个得分最高。

在某些情况下,就像在上面的示例图像中,最长的轮廓加倍。为了更容易理解我在“加倍”下的意思是找到的轮廓的可视化图像:

在此处输入图像描述

因此,我试图通过尝试理解findContour的 OpenCV 文档来弄清楚为什么会发生这种情况,但我仍然无法理解真正的原因。

我设法实现的目标是,如果我从 CV_RETR_TREE 更改为 CV_RETR_EXTERNAL,我不会得到双倍轮廓。

所以我的问题是:

  • 双重轮廓背后的原因是什么,为什么 CV_RETR_EXTERNAL 解决了这个问题?
  • 获得点数最多的轮廓并不一定意味着它是最长的,对吧?由于 CV_CHAIN_APPROX_SIMPLE 标志。例如,CV_CHAIN_APPROX_NONE 会解决这个问题吗?
0 投票
1 回答
1780 浏览

opencv - 为什么 OpenCV findContour 方法总是找不到闭合的外轮廓?

我有两个来自同一相机位置的图像。它们之间的区别在于,一个是用正交投影拍摄的,另一个是用透视投影拍摄的。

这是两张图片:

透视和正交示例图像

当我对它们运行findContour OpenCV 方法时,结果如下:

在此处输入图像描述

为什么 OpenCV 没有为透视图找到闭合的外轮廓曲线?

我尝试了 CV_RETR_TREE 和 CV_RETR_EXTERNAL 标志以及 CV_CHAIN_APPROX_SIMPLE 和 CV_CHAIN_APPROX_NONE 标志的组合。

这是findContour方法的文档示例代码(我正在使用) 。