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

opencv - OpenCV - 检测带有障碍物的粗糙手绘圆圈

一段时间以来,我一直在尝试从文档中提取手绘圆圈,但我所做的每一次尝试都没有达到我需要的一致性水平。

工艺相册

我一直遇到的问题是,当 2 个“圆圈”太近时,它们会变成一个轮廓,破坏了我检测轮廓是否弯曲的尝试。我确信一定有更好的方法来提取这些圆圈,但它们的不完美和不一致真的让我很困惑。


我尝试了许多其他方法来挑选曲线,其中最准确的是:

与其使用膨胀来弥合分割轮廓之间的间隙,不如找到端点并尝试继续曲线,直到它碰到另一个轮廓。
问题:我无法有效找到轮廓的转折点,否则这将是我的首选方法

如果这个问题被认为“过于具体”,我深表歉意,但我觉得像这样的计算机视觉东西总是可以应用于其他地方。

提前感谢您提供的所有帮助,我快到了尽头。

编辑:我刚刚意识到这张专辑工作不正常,但我认为现在应该修复它。

0 投票
1 回答
1302 浏览

python-2.7 - Python OpenCv2,计算彩色物体的轮廓

我希望能够计算检测到的对象中的像素数。我正在使用 cv2.threshold 函数。这是一些 sudo 代码。

从现在开始,我不知道如何计算对象的像素。如何找到二值图像的轮廓?我想有可能在 Thresh/ 蒙版上 cv2.bitwise_and 全黑图像,但这似乎可能很慢,而且我不知道如何创建这样的全黑和白图像。

那么 TD:LR,你如何计算二进制图像中物体的像素数?

注意:我实际上只是在最大对象之后,只需要像素数,而不是图像。

编辑:不尝试计算检测到的像素总数,我已经这样做了。想要从具有最大数量的对象中检测到的像素数。

0 投票
0 回答
182 浏览

opencv - 如何加快或替换代码以组合闭合轮廓?

我的问题是以合理的速度组合附近的轮廓。

我从一个包含大型闭合形状图像的 CV8U 单通道灰度垫开始。在这个形状的内侧发芽的是一条短曲线。我的任务是仅将曲线变成点向量。

所以我阈值我的垫子并打电话给 FindContours。结果是许多轮廓的向量。有些是噪音,包括我没能完全掩盖的大块形状。但有几个是我曲线的一部分。问题是曲线 - 在原始图像中是连续的 - 被 FindContours 分割成许多轮廓。为了解决这个问题,我找到了最大的轮廓,它始终是我的曲线的一部分,并搜索其他附近的轮廓。如果我找到任何东西,我将它们连接在一起,然后重复。

最后,我有一个包含我的曲线的点向量。有用。但是所有的循环和迭代都让它变得非常慢。

什么替代方法可以保留输出(代表我的曲线的点向量)但运行速度快?

0 投票
2 回答
644 浏览

node.js - OpenCV 与 NodeJS 绑定安装

我想做一个直播人脸检测项目 OpenCV & NodeJS 绑定。我的目标是最终在 Heroku 上使用 NodeJS 后端和 HTML 前端部署它。我正在关注

https://www.npmjs.com/package/opencv

我正在遵循 Windows 的安装过程。现在,我想测试我的所有安装是否已完成,上面的网站上说

但是,我不知道该使用什么命令。我已经克隆了 git repo,对于使用什么命令运行哪个文件,我看起来很困惑。例如,是否可以

此外,在那个网站上,它说构建失败,只有 45% 的覆盖率。这是否意味着它不起作用?

在此处输入图像描述

0 投票
1 回答
382 浏览

opencv - 在白色背景上查找形状。细化线条

我有以下图像作为测试图像:

在此处输入图像描述

我试图找到图像(和其他图像)上的形状。我现在的方法如下:

  1. 具有 3x3 内核的高斯模糊
  2. 使用列表进行精明边缘检测(获取所有形状)
  3. Morphology 与 MorphOp.Close 关闭边缘
  4. FindContours 查找轮廓
  5. 每个轮廓的迭代:
    1. 查找 ApproxPolyDP
    2. 找到 ConvexHull
    3. 如果船体尺寸 < 2、大约面积 < 200 或船体尺寸 > 50000 或弧长大约 < 100,则丢弃
    4. 绘制凸包

此方法产生以下图像,其中绘制了凸包: 在此处输入图像描述

这几乎是完美的,但请注意,这些线条被视为轮廓事件->供应商和事件->文档)。查看边缘信息时,很明显为什么会这样:

在此处输入图像描述

线条被检测为轮廓。我如何准备/找到形状以便检测不到线条?我虽然有一些细化算法,但由于我也在处理现实生活中的图像,所以很难找到一个有效的阈值。这是一个现实生活图像的示例,其中很难进行细化,因为细化通常要求图像是黑白单色的。

在此处输入图像描述

你会怎么做?有什么方法可以确定轮廓/凸包是线、矩形还是类似的东西?

0 投票
3 回答
12044 浏览

c++ - OpenCV:如何在 C++ 中找到轮廓内的像素

假设如果我们正在处理图像,有没有办法访问轮廓内的像素?

我已经使用函数 findContours() 找到了轮廓,甚至找到了时刻,但我找不到轮廓内的像素。

欢迎任何建议!

谢谢!

0 投票
0 回答
34 浏览

opencv - 如何使用 OpenCV 从图像中的边界获取不同的块

我正在将 OpenCV 与 C++ 一起使用。

我有以下图片->

在此处输入图像描述

我想将此图像中的单元格结构复制到 Excel 表中。我已设法对文本进行 OCR,但不知道如何将结构复制到 Excel 中。我正在考虑裁剪块,因此我尝试了一些技术,例如HoughLinesP()用于分隔每个单元格,但它只是不起作用,并且还尝试了线模式匹配,minMaxLoc()但这也没有给出好的结果。

在 OpenCV 中是否有任何可靠的技术可以做到这一点?

0 投票
0 回答
69 浏览

c++ - 检测不规则的矩形物体不能正常工作

我想使用 OpenCV 和 approxPolyDP 函数检测不规则的矩形对象。在图像中,我有 4 个窗口,可以使用 approxPolyDP 近似为矩形轮廓。但是当设置一定的阈值时,我无法检测到所有这些。我使用顶点之间的宽度和高度以及角度来过滤窗口。我想要更强大的代码来检测所有 4 个窗口。有什么帮助吗?这是我的代码

这里是源图

源图像

在这里检测到窗户 检测到的矩形

这里是绘图/视觉轮廓 轮廓

0 投票
1 回答
271 浏览

java - OpenCV 检测最大矩形会产生令人费解的结果

我的目标是检测图像中最大的矩形,无论它是否倾斜。经过一些研究和谷歌搜索,我想出了一个理论上应该可以工作的代码,但是在一半的情况下,我看到了令人费解的结果。

我在 Android 上使用了 OpenCV,代码如下:

在某些情况下,它的效果非常好,如图所示(请参见显示器挡板和屏幕之间的白线.. 抱歉颜色): 有效示例: 有效的例子

但是,在此图像中,以及大多数屏幕为灰色的图像中,它会产生疯狂的结果。 不起作用的示例: 不起作用的例子

0 投票
1 回答
3384 浏览

python - 使用opencv python从图像中检测和裁剪字符

我有一个项目,我必须从图像中检测孟加拉语数字。我决定做一个实验,比如带空格和不带空格的数字。我的 python 程序可以从带有空格的图像中检测到所有数字。

当我给出没有空格的图像时出现问题。它不能像上一个那样顺利地减少数字。

这是我的代码

起初我使用扩张来寻找轮廓,但它不适用于没有空间图像的数字。然后我直接使用 thresh 输出,之后我得到了大部分数字,但我无法完美地切割它们,因为轮廓区域检测数字与其他数字的某些部分。虽然它在第二张图像中没有空间,但仍然有 2 个数字没有相互接触。那么为什么会有这样的输出呢?

带空间:

有空间

没有空格:

没有空间