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

php - 如何使用 php 从手掌图像中识别手掌线

从手掌的方向,我需要检测手掌是左还是右,并且我想从手掌中提取线条,有没有可用的 PHP 库?或者我如何在 php 中使用 canny

手掌线显示在这里

0 投票
1 回答
1558 浏览

python - 使用 OpenCV 和 Python 准确寻找水域边缘

我一直在努力尝试使用 OpenCV/Python 检测水的边缘,我得到的结果相当不准确,而且没有鲁棒性。这是我到目前为止所取得的成就: 原始图像,输出图像

Canny 边缘检测

我目前正在做的是设置一些变量(高斯模糊的水平、用于 Canny 边缘检测的 sigma 以及测量的水平可以在每个点之间变化的最大偏差),执行“自动”Canny 边缘检测(其中测量中值像素强度并用于形成下边界和上边界),然后从左下角向上移动以找到第一个“白色”像素。这是在帧的整个长度上以五次的 x 间隔完成的。

计算点的平均 y 值。然后测试每个点,看它是否偏离平均像素太远,偏差限制设置得更早。然后将剩余的点绘制在图像上作为蓝线。在每一帧记录绘制像素的平均值。

30 帧后,计算平均值并将其绘制为红线,然后假定为“真实”水高。

有没有人有更好的方法来做到这一点?什么会使水的边缘更加突出?这种方法适用于我录制的大多数镜头,但效果不佳。

提前致谢。

0 投票
0 回答
467 浏览

opencv3.0 - 在 OpenCV 中,如何使该图像的背景变黑并提取被遮挡对象的轮廓

我正在尝试提取草莓图像和容器并使背景变为黑色或白色。我的目标是

  1. 删除背景 - 使其变黑
  2. 做精明后跟霍夫找到盒子的矩形
  3. 为被遮挡的草莓绘制轮廓并计算有多少草莓

我可以部分完成一些任务,但我无法从一开始就完全删除背景。这是到目前为止的图像和我对代码的尝试。

https://www.dropbox.com/s/ypaqlfmert6emki/src.png?dl=0 https://www.dropbox.com/s/zrragdxlg5xfcqe/gray.png?dl=0

0 投票
2 回答
1256 浏览

java - Android Java Opencv canny 抛出 cvexception

我想在 Android 中使用 Canny 从图像中检测边缘,但它一直抛出这个错误:

我不知道是什么导致了错误,也没有在互联网上找到任何答案。

这是我使用的代码:

有人可以帮我解决这个问题吗?

提前致谢!

0 投票
1 回答
906 浏览

opencv - 如何检测文档图像上的边缘,并将部分切割成单独的图像?

任务是获取文档的图像,并利用围绕不同“部分”的直线将图像拆分为不同的文档以进行进一步解析。不同“部分”的大小因页面而异(我们正在处理数千页)。这是其中一张图片的样子:

文档布局示例:

示例文档

图像分析/处理对我来说是全新的。到目前为止,我已经尝试使用 Scikit 图像边缘检测算法来找到“框”,并希望使用这些“坐标”来切割图像。但是,我尝试过的两种算法(Canny,Hough)在高灵敏度时将文本行作为“边缘”,而不是在低灵敏度时提取我想要的行。我可以编写一些自定义和低级别的东西来自己检测这些盒子,但我必须假设这是一个已解决的问题。

我的方法是否朝着正确的方向发展?谢谢!

0 投票
2 回答
1400 浏览

c++ - 受光照影响的边缘检测

我有这个灰度原始图像:

在此处输入图像描述

我想检测物体的边缘。但是,它会受到边缘附近照明的影响。这是我在高斯模糊和 Canny 边缘检测之后得到的:

在此处输入图像描述

这是我的代码:

光源位于物体下方。物体边缘的照明来自光源或光的反射。他们总是在同一个地方。

照明也被检测为边缘。我尝试了其他几种方法,例如连接组件标签和使用示例代码(这里是初学者)对图像进行二值化,但都可以使用。有没有办法检测干净的边缘照明?

0 投票
1 回答
867 浏览

python - OpenCV精明边缘检测在理想正方形上无法正常工作

我正在使用这个 15*15 像素的二进制方形图像。

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

我正在应用 openCV(2.7 版)提供的精明边缘检测来测量对象大小。我的预期输出应该是这样的,

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

但是两条边(上边和左边)总是移动一个像素。Canny边缘检测的输出为,
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

为什么会发生这种像素偏移?
有什么办法可以避免这种情况。(我无法在输出后手动调整像素偏移,因为我必须对不规则形状使用边缘检测)无论奇数/偶数像素如何,都会发生相同的偏移。

0 投票
1 回答
561 浏览

opencv - OpenCV 中的边缘检测

我们在 OpenCV java 中编写了用于边缘检测的代码,其中图像的背景将是纯白色以提高准确性。我们为边缘检测部分添加了以下功能:

但是,边缘检测存在一些问题,因为即使背景中的其他点也会出现影响代码的边缘。有人可以告诉我一些改进,以便获得更准确的输出,请记住图像将从智能手机相机拍摄,因为这是我项目的前提。

0 投票
2 回答
1445 浏览

python - 定义线之间的距离

我对 Python 很陌生,我正在尝试在插图中定义手绘线条,正如我编写的代码所示,在我使用 cv2.Canny 对图像进行模糊、腐蚀和阈值处理后,那些显示为线条的图像在我们看来,代码是平行的

(这条线线看起来像这样这个

然后我只显示平行的,但我不知道如何定义最小和最大距离值(以像素为单位)

请问有什么帮助吗?

这是我到目前为止所写的:

0 投票
0 回答
581 浏览

opencv - OpenCV:细化类似于矩形的轮廓

我正在研究矩形检测软件,它应该检测给定表面上的任何矩形。在做了一些研究后,我想出了以下几点:

  1. 在灰度图像上应用高斯模糊
  2. 使用 Canny 检测边缘,使用 Otsu 阈值
  3. 带矩形的 MorphEx
  4. 查找轮廓

这会产生不错的结果,但在某些情况下,轮廓并不完美。在以下图像中可以看到原始图像检测到的轮廓

我在考虑凸包,但即使不是矩形的轮廓也可能被误解为矩形。也许继续直线轮廓并计算交点?

我被困住了。关于如何细化轮廓的任何提示?

这是供参考的代码(Android上的Java):