问题标签 [canny-operator]

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 回答
1085 浏览

android - Canny Edge Detection (Android OpenCV) 应用程序不幸停止

在上面的代码中,Android Studio 没有显示任何错误。但不幸的是,该应用程序停止获取此Canny_Edge 选项(在菜单中)。为什么,谁能解决这个问题。

0 投票
1 回答
1272 浏览

python - 在 Python OpenCV 中使用霍夫圆进行网络摄像头虹膜检测

在 dlib 的面部标志检测器的帮助下,我设法为眼睛隔离了一个非常具体的边界区域。然而,我并不完全困惑于如何在虹膜本身周围创建一个圆形边框。我尝试过精明的边缘检测,然后是霍夫圆,但霍夫圆似乎无法处理图像,这很可能是由于分辨率低和虹膜部分受阻(当然是由于眼睑)。我已经尝试过使用更高分辨率的相机馈送并且它可以工作,但是由于我的项目的限制,这样做是不可行的。目前,这是我隔离的边界区域。

第一张图片是眼睛直视网络摄像头,如下所示:

在此处输入图像描述

下图是向上看的眼睛:

在此处输入图像描述

我不是在寻找代码,但如果有人可以指导我对图像进行哪些转换是合适的,我将不胜感激。

0 投票
2 回答
742 浏览

image-processing - 自适应 Canny 边缘检测

什么是自适应 Canny 边缘检测,为什么它比普通的 Canny 边缘检测更好?它也是在matlab中实现的吗?

0 投票
1 回答
596 浏览

c++ - 图像比较方法和降噪

我目前正在做一个从一系列产品线中发现破损或坏产品的项目。我正在尝试使用 Opencv 通过Canny提取边缘。以下是分别从不良产品和样品产品获得的边缘。

坏的

坏的

好的

好的

边缘非常清晰,但有许多无意义的斑点(噪音)小区域,因此似乎无法直接逐像素比较这两张照片。我在想我是否可以继续旋转和移动不良产品并找到最佳比较分数,例如像素之间的平方差。然而,有了这些噪音,这种方法似乎是不可能的。

因此,我在想是否有办法提取最大的连接区域或将这些连接区域分成几张图片?或者,即使在这种情况下,是否存在更好的比较方法?

非常感谢!!!

0 投票
2 回答
760 浏览

r - 在 R 中执行 Canny 运算符

我正在尝试使用 R 进行某些图像处理操作。到目前为止,我已经尝试过imager,EBImagesplitfil包。

但他们都没有能力执行 Canny 算子。有什么方法可以使用 R 来做到这一点?

0 投票
1 回答
2584 浏览

c++ - 使用 Opencv 和 Hough Transform circle 检测圆(下标错误)

由于现在是我的学校假期,我决定学习一些技能,因此我正在尝试学习如何使用 Visual Studio C++ 的 OpenCV 功能来检测纸箱中有多少罐,并且必须将其 4 x 4 分组。 在此处输入图像描述

我尝试了各种演示代码,例如“opencv find:contour”、模板匹配(效果不佳,因为它无法检测到顶盖的旋转)

我发现最好的方法是将Canny Edge Detection和Hough Transform Circle结合起来,使得Canny Edge Detection的输出结果可以是Hough Transform Circle的输入图像,结果如下。

在此处输入图像描述

不幸的是,并非所有圆圈都被检测到,如果我改变

for (int i = 0; i < circles.size(); i++) 进入

我会得到一个表达式:向量下标超出范围。我不知道为什么它只能检测到 21 个圆圈

源代码如下:-

我还手动输入了线的坐标以将它们分组为 4 x 4。在此处输入图像描述 我应该更改什么以使其没有任何下标超出范围错误并能够检测到所有圆圈?

0 投票
1 回答
4615 浏览

opencv - 使用 OpenCV 检测写在白板上的符号

我正在尝试用黑色/蓝色/红色/绿色标记检测写在白板上的形状。形状可以是圆形、矩形或三角形。图片可以在这篇文章的底部找到。

我使用 OpenCV 作为图像识别的框架。

我的首要任务是研究并列出可用于检测的不同策略。到目前为止,我发现了以下内容:

1)灰度,模糊,Canny Edge,轮廓检测,然后一些逻辑来确定检测到的轮廓是否是形状?

2) 具有不同形状特征的 Haar 训练

3)SVM分类

4) 灰度、模糊、Canny Edge、霍夫变换和某种颜色分割?

还有其他我错过的策略吗?任何较新的文章或经过测试的方法?你会怎么做?

其中一张测试图:https ://drive.google.com/file/d/0B6Fm7aj1SzBlZWJFZm04czlmWWc/view?usp=sharing

更新:第一个策略似乎效果最好,但远非完美。当盒子没有关闭,或者白板有很多噪音时,就会出现问题。Haar 训练似乎不是很有效,因为检测的形状很简单,没有很多特定的特征。我还没有尝试过 CNN,但它似乎最适合图像分类,而不是检测较大图像中的形状(但我不确定)

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 投票
2 回答
145 浏览

matlab - 当我尝试在 matlab 中执行非最大抑制时,图像是一条线

所以,我在 matlab 中编写了这段代码,它应该执行非最大抑制。本质上,它应该将给定点与其邻居进行比较,如果它高于所有邻居,则将此点设置为 1,否则设置为零。

当我运行代码时,我拥有的图像是一条线。错误可能在哪里。

0 投票
1 回答
2362 浏览

image - 如何去除精巧边缘图像中的长边缘?

在我处理了精明的边缘检测之后,我得到了边缘图像。但我只想保持短边(边缘来自角色)。并且有一些长边(这里我定义为超过图片高度的一半)。示例图片如下所示: 样本图片

那么如何去除超过图片高度一半的边缘呢?

相关问题: 去除水平/垂直长边