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

opencv - 如何提高目标检测?

我想改进我的专为对象检测而设计的项目。

首先,为了得到我使用的实际结果absdiff,接下来我在下面的代码中使用以下操作:

我的最后一次手术是findContours(canny_output, *contours, *hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));

这是我使用accumulate函数(20帧)得到的每个函数和前景后的结果:

前景:http: //j71i.imgup.net/foregroundc3dc.PNG

减法: http: //p81i.imgup.net/subtractio2866.PNG

索贝尔: http: //g51i.imgup.net/sobela1fb.PNG

阈值:http: //p46i.imgup.net/treshold14c9.PNG

扩张、侵蚀和 Canny:

http://q68i.imgup.net/canny2e1a.PNG

findContours:http: //v76i.imgup.net/contours6845.PNG

背景也是从accumulate函数中获得的。

你能帮我获得更好的角落或轮廓检测吗?我需要它,以像素为单位获取对象大小。

提前致谢!

0 投票
1 回答
6119 浏览

c++ - OpenCV 3.0 主动轮廓(蛇)算法

当前情况:我想检测图像内的矩形(或正方形),其中这些矩形的轮廓不一致。就像棋盘,外轮廓有整体。

可能的解决方案:我正在尝试实现一个主动轮廓算法,它应该可以帮助我检测物体的外部轮廓。我知道对象之外的一些点,只要对象适合它,它们就可以用来缩小和适合这些点。

搜索:找到了一个老openCV版本的cvSnakeImage函数,没有维护,不应该再用了。我找到了一个活动轮廓 C++ 实现,它也使用旧的 openCV 和 boost 库。我已经尝试过,但无法构建代码。HiDiYANG/ActiveContour

问题: OpenCV 中是否有当前可用的主动轮廓算法实现?是否有可用的最佳实施,我应该花时间了解实施?

示例图像: 我的第一张图像带有灰色边框上的点,并且想要获得红色矩形(第二张图像)。

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

0 投票
2 回答
15996 浏览

python - 使用 OpenCV (Python) 改进轮廓检测

我正在尝试从照片中识别卡片。我设法在理想的照片上做我想做的事,但我现在很难在光线略有不同的情况下应用相同的程序,等等。所以问题是关于使以下轮廓检测更加健壮。

我需要分享我的大部分代码,以便获取者能够制作感兴趣的图像,但我的问题仅与最后一个块和图像有关。

在此处输入图像描述

然后检测到卡:

在此处输入图像描述

视角修正:

在此处输入图像描述

那是我遇到了问题。我想检测形状的轮廓。我发现最好的方法是在灰度图像上使用bilateralFilter和的组合:AdaptativeThreshold

在此处输入图像描述

这非常接近我想要的,但是我怎样才能改进它以获得白色的封闭轮廓,而其他一切都是黑色的?

0 投票
2 回答
3790 浏览

python - 提高 OpenCV Python 中 findContour 的准确性

我正在尝试为下面显示的每个“斑点”设置最小边界框。作为图像处理管道的一部分,我使用 findContours 检测数据中的轮廓,然后在给定一组已发现轮廓的情况下绘制一个最小边界框。

最小边界框不是很准确——一些特征明显遗漏,而另一些特征未能完全“封装”一个完全连接的特征(而是被分割成几个小的最小边界框)。我玩过检索模式(如下所示的 RETR_TREE)和轮廓近似方法(如下所示的 CHAIN_APPROX_TC89_L1),但找不到我真正喜欢的东西。有人可以建议一个更强大的策略来使用 OpenCV Python 更准确地捕获这些轮廓吗?

图 1 图 2

** 编辑:根据 Sturkman 的建议,绘制所有可能的轮廓似乎涵盖了所有视觉可检测的特征。

在此处输入图像描述

0 投票
0 回答
1323 浏览

python - 图像中检测到的矩形的旋转

我需要从图像中提取检测到的矩形。矩形以未知的任意角度旋转。我看过这篇文章:如何拉直旋转的矩形

但是有两个问题:

  1. 如何计算“theta”,这在数学上是可以解决的。
  2. 本文中的代码片段仅适用于cvnot cv2

有人有比这篇文章更好的解决方案吗?完全开发的解决方案cv2

我使用了 RotateRect 函数。在这两种情况下,我都检测到了矩形并绘制了它们。问题是角度。在这两种情况下,天使都被检测为阴性。至少其中一个应该是积极的。这就是为什么我不能根据链接正确旋转它们的原因。请看一下我附在问题上的照片。 在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
984 浏览

c++ - 从图像中减去除面积最大的轮廓之外的所有轮廓

找到最大轮廓的索引后该怎么办?如何删除所有其他轮廓及其内部区域?图像是二进制的(cv::Mat thr)。只是带有白色区域的黑色背景。谢谢。

0 投票
1 回答
3794 浏览

python - Draw Contours in opencv around recognized polygon

I am working on OpenCV-Python. I have a image like this(bellow image,but without light green lines) from live feed by webcam.I have found corners coordinates,

of polygon. How to draw a line around recognized polygon like light green lines shown on image?

Recognized shape

0 投票
2 回答
496 浏览

c - 查找从轮廓检测到的圆的厚度?

想要检测此图像周围的缺陷我正在尝试检测从下面的代码中收到的圆圈的厚度,但我无法这样做。

我的基本想法是穿过圆圈,如果任何一点的厚度小于另一边,这意味着它是一个有缺陷的圆圈。

我在谷歌上找到了这个,但我不知道如何把它放在代码中:

http://answers.opencv.org/question/28180/measuring-edge-thickness-using-opencv

代码:

在此之后,我知道我需要找到轮廓,但是我怎样才能得到圆的厚度并穿过圆来得到有缺陷的呢?我不想获得像素数并检测有缺陷的圆圈......

当我运行上面的代码时,我得到了这个图像

0 投票
1 回答
3279 浏览

python - 如何在opencv中获取旋转椭圆长轴的开始和结束坐标(x,y)?

我正在执行对象的运动跟踪,并且我正在尝试识别对象的正面和背面。物体是不对称的,这意味着轮廓的质心更靠近前面而不是后面。使用此信息,我将按以下方式处理此问题:

  1. 绘制物体的轮廓

  2. 寻找质心

  3. 绘制边界椭圆

  4. 计算长轴长度如下(如图所示)

  5. 计算主轴的开始和结束x,y坐标

    /li>
  6. 确定哪些点更接近轮廓的质心

    /li>

我遇到的问题是,虽然我得到椭圆的“前端”大部分时间都是正确的,但偶尔点有点偏离。据我观察,这似乎正在发生,x 值是正确的,但 y 值不同(实际上,我认为这表示垂直于我的椭圆的长轴)。我不确定这是否是 opencv 计算角度的问题,或者(很可能)我的计算不正确。我确实意识到这是一个复杂的例子,希望我的数字有所帮助!

位置1 位置2

编辑:当我得到错误的点时,它不是来自垂直椭圆,而是来自我的椭圆的镜像。它也发生在 x 值上,而不仅仅是 y。

在遵循下面 ssm 的建议之后,我大部分时间都得到了想要的点。这点偶尔还是会出错,但很快就会“弹回”到位。例如,这是发生这种情况时的几帧: 改善

顺便说一句,上面的图像是在使用以下代码“校正”角度之后:

如果我不进行更正,我会在其他时间得到错误的点,如下所示相同帧。 角度未校正

所以看起来我对某些角度进行了角度校正而其他角度没有校正。如何在这两种情况下获得所有正确的分数?

(椭圆内的白点是轮廓的质心,而椭圆上或椭圆外的点是我得到的点)

0 投票
1 回答
2241 浏览

c# - 不能在 C# 中将“FindContours”与 EmguCV 一起使用

我试图在我的二进制图像中找到最大的对象。我曾经在第 52 行在这里编码,但我得到了FindContours如下所示的错误。

我的代码有什么问题?还有其他方法可以找到二值图像中面积最大的物体吗?

在此处输入图像描述