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

java - 如何在 Java 和 android studio 中实现 Canny Edge Detector

我一直在 android studio 或 java 中查找精明边缘检测的代码。谁能解释一下该方法的工作原理以及精明边缘检测器的示例代码?

0 投票
2 回答
1683 浏览

c++ - 基于处理所述源图像获得的精明边缘轮廓在opencv中分割源图像

我有一个源图像。我需要从中分割出一个特定的部分并将其保存为另一个图像。我有需要分割的部分的精巧轮廓,但是如何使用它从源图像中剪切部分?我已经附上了源图像和精明的边缘轮廓。请帮助我并建议我一个解决方案。

源图像

精明的边缘

EDIT-1:Alexander Kondratskiy,这就是您填写边界的意思吗?在此处输入图像描述

EDIT-2:根据Kannat,我已经做到了 带有轮廓的源图像

现在如何将轮廓外部和内部的区域分成两个单独的图像?

编辑3-我想到了“和”蒙版和轮廓线源图像。由于我使用的是C,所以我遇到了一些困难。这是我使用的代码,并且:-

我总是收到大小或类型不匹配的错误。我调整了大小,但似乎无法调整类型,因为一个(hsv_mask)是 1 个通道,其他是 3 个通道。

@kanat-我也尝试了您的 boundingrect,但似乎无法以 C 格式正确输入。

0 投票
1 回答
2348 浏览

c++ - opencv中的轮廓比较

我已经在 opencv/c++ 中创建了一些代码,女巫可以找到图像(叶子)的轮廓,所以在从方法获得轮廓结果之后

findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );

此方法的结果将保存在“轮廓”类型 ( OutputArrayofArrays)

所以问题是如何将这些结果与其他结果进行比较?

我发现这种方法可以比较,但我不能使用它!

double compare = cvMatchShapes(R, T, CV_CONTOURS_MATCH_I1);

R,T:要比较的 2 个对象。

谢谢你

0 投票
1 回答
63 浏览

image-processing - 在 Canny 边缘检测中使用“简单”和“短”高斯函数

在 Canny Operator 的一些实现中

(仅指数部分)用于代替简单的高斯二维函数:

让我们称之为“短”功能。在 Canny 的原创作品中([看第13页),他也使用了这个函数,但是在互联网和好书中有很多实现,它们使用标准的高斯二维函数。

在我的应用程序中,我有一个相当暗的渐变幅度图像,它使用标准函数并且实际上没有分配角,而使用“短”函数一切都按预期工作。

问题:这些功能有什么区别,为什么有些人使用一个功能,而有些人使用另一个功能?

0 投票
2 回答
5202 浏览

python - 在 OpenCV 中的方向检测有问题

我正在尝试制作一个检测对象方向的计算机视觉脚本。它在大多数情况下都有效,但似乎无法对某些图像取得同样的成功。

该脚本依靠模糊和 Canny 边缘检测来查找轮廓。

工作示例:

在此处输入图像描述

它失败的部分: 在此处输入图像描述

在此处输入图像描述

对于失败的部分,它会为相同形状之一设置两条线,并且完全忽略其他形状之一。

主要代码:

CVAlgo.py

有谁知道问题是什么?有人知道我可以如何改进这个脚本吗?

0 投票
1 回答
945 浏览

opencv - opencv canny:如果您使用黑白图像,minVal 和 maxVal 重要吗?

前言:这是这个问题的延续。

考虑以下代码,取自此处

我的问题:

  • 使用 open cv 的 canny 函数时,如果您使用黑白图像,您对 minVal 和 maxVal 的选择是否重要?

我问的原因:

  • 我已经尝试了许多值,但它们似乎并不重要。
0 投票
1 回答
3787 浏览

opencv - 在应用 Canny 边缘检测之前预处理图像

我在下面有一个房间的图像,我想检测所有的墙壁边缘。我尝试了很多不同的过滤器组合(双边、高斯、拉普拉斯等),最好的组合似乎如下,

  • 将图像转换为灰度
  • 应用双边过滤器
  • 运行 Canny 边缘检测过程
  • 再应用两个双边滤波器以消除任何噪声
  • 应用膨胀过滤器以“堵塞”边缘上的任何孔

我遇到的问题是,无论我尝试过什么,我都无法获得一个明显的直边,它穿过靠近天花板的墙壁。我尝试了多种技术来尝试使边缘变暗,但无济于事。应用商店上有一个应用程序可以检测到这个边缘,所以我知道它可以完成,我只是不确定我需要应用哪些预处理过滤器,希望有人能指出我正确的方向。

在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
2203 浏览

c++ - 如何去除精巧图像中的直线或非曲线

我有一个精明的边缘图像 在此处输入图像描述

我想删除除了看起来像半圆/椭圆或“C”的线条之外的所有线条。尝试过霍夫圆变换,它检测到所有曲线。不需要。

0 投票
1 回答
995 浏览

python - 使用OpenCV(Python)找到具有最大封闭区域的轮廓

我有一个图像Original Image,我想找到包含图像中框的轮廓。这样做的原因是我想将图像裁剪到边界框,然后对裁剪后的图像进行进一步的图像处理。

我已经尝试检测 Canny 边缘,但是它们似乎没有按照我的意愿连接。附件是精明边缘外观的图像。精明的边缘

从原始图像中找到边界框的最佳方法是什么?

非常感谢。

如果可能的话,让我知道如何使这个问题更清楚!

0 投票
1 回答
357 浏览

opencv - 尝试索引全局“cv”(零值)

操作系统:ubuntu

我正在尝试使用 cv 包中的函数检测给定图像中对象的边缘。

首先,我在我的 ubuntu 终端中运行“qlua”。

但是,它失败并出现以下错误:

[string "cv.rectangle{lena_p,{5,5},{10,10},color = {30..."]:1: 尝试索引全局 'cv' (一个 nil 值) 堆栈回溯: [string "cv.rectangle{lena_p,{5,5},{10,10},color = {30..."]:1: 在主块 [C]: 在 0x7f6be51eaba0

[string "ca_l = cv.Canny{image=limg,threshold=1,thresh..."]:1: 尝试索引全局 'cv' (一个 nil 值) 堆栈回溯: [string "ca_l = cv.Canny{ image=limg,threshold=1,thresh..."]:1: 在主块 [C]: at 0x7feb66429ba0

我的问题是,如何使用“cv”包中的函数来检测对象轮廓?

参考: https ://github.com/VisionLabs/torch-opencv/tree/master/cv