- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用这个 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)提供的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 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
但是两个边缘(上边缘和左边缘)总是移动一个像素。
精明边缘检测的输出是,
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
为什么会发生这种像素偏移?
有什么办法可以避免这种情况。 (我无法在输出后手动调整像素偏移,因为我必须对不规则形状使用边缘检测)无论奇数/偶数像素如何,都会发生相同的偏移。
最佳答案
乍一看,当我遇到这个问题时,我感到很惊讶。此外,我不相信 Canny 边缘检测会如此具有欺骗性。所以我拍了一张类似的图像,并对其应用了 Canny 边缘。令我惊讶的是,我遇到了您面临的同样问题。为什么会这样?
挖后到the documentation我遇到了许多在幕后发生的操作。
该文档声称进行了高斯滤波以减少噪声。嗯,这是真的。但这也会模糊图像中存在的现有边缘。所以当你模糊一个完美的正方形/矩形时,它往往有弯曲的角落。
高斯滤波之后,下一步就是寻找边缘梯度。如前所述,由于模糊(高斯滤波),现在正方形/矩形的完美边缘消失了。剩下的是圆形/弯曲的边缘。找到圆形/弯曲边缘上的渐变强度永远不会产生完美的方形/矩形状边缘。我可能是错的,但我想这是为什么我们在执行 Canny 边缘检测时无法获得完美边缘的主要原因。
如果你想要一个完美的边缘,我的建议是尝试找到轮廓(如 Micka 所建议的)并绘制一个边界矩形。
关于python - OpenCV canny 边缘检测在理想正方形上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000305/
我有一个脚本,该脚本用于根据颜色相似性为房间的墙壁重新着色。但是我需要根据边缘检测为墙壁重新着色。 import cv2 import numpy as np import sys from PIL
我想尝试 Canny 边缘检测器,但是当我尝试开始时收到未处理的异常: canny_project.exe 中 0x00007FF97F6C8B9C 处未处理的异常:Microsoft C++ 异常:
我想从二进制 canny 边缘图像中提取轮廓。 原图为: 应用 cvCanny() 和 cvDilate() 后,我得到以下图像: 我需要将封闭框(整个蓝色框)检测为轮廓。我应用 cvFindCont
我在 OpenCV Java 中使用 Canny 边缘算法找出了边缘。我需要从这张图片中提取脊髓。 能否请您建议下一步如何仅从此图像中提取脊髓? 这是原始图像: 最佳答案 要从图像中提取特定对象,您必
我正在使用 canny 边缘检测器来检测输入图像的边缘。 在每个输入图像中,可以有两个对象(主对象和其中的另一个对象),如示例图像所示。因此,我应该在这种情况下检测两条边 我根据输入图像自动确定阈值上
我使用 OpenCV 的时间相当短,对图像执行了 Canny 边缘检测,然后还执行了膨胀以进一步将对象(在我的例子中是正方形)与背景分开。 我现在的问题是使用一种算法来识别 2D 中的可抓取区域,该算
我有一张图片,我想检测它的边缘。我发现 Canny 已经被使用了很多(我不知道我是否有比这更好的选择)。我已将值设置如下: Imgproc.Canny(img, img, 10, 100, 3,t
我正在尝试寻找图像的轮廓,在此之前我正在应用 Canny 的边缘检测器。它为不同的图像提供不同的结果。对于一张图像,它在阈值下给出完美的轮廓 - min-40 max-240,而对于其他图像,它的阈值
当我使用 canny edge 算法时,它会按预期产生与粗彩色线相对的 2 条边,但我只想显示一条边,以使我的直线和曲线检测算法更简单,关于我怎样才能做到这一点? 代码如下: bool CannyEd
当使用 Imagemagick 转换工具的 -canny 选项时,这些参数指的是什么? -canny radiusxsigma{+lower-percent}{+upper-percent} 文档 (
我正在尝试创建一个程序,该程序将检测并去除图片中的边框,目标是检测图片中的文档并将其清理... 这是我的代码: import sys import cv2 import numpy as np imp
我知道在使用 Canny 检测边缘之前对图像应用高斯模糊非常重要。我的问题是: cv2.Canny() 自己做高斯模糊还是有必要在 cv2.Canny() 之前应用 cv2.GaussianBlur(
当我在图纸上运行 cv.Canny 边缘检测器时,它会检测到数百个密集填充在阴影区域中的小边缘。我怎样才能让它停止这样做,同时仍然检测到眼睛和 Nose 等较轻的特征?我也试过模糊。 这是一个示例,与
我正在尝试在此图像上运行精明边缘检测器: 使用此代码: def edges(img): from skimage import feature img = Image.open(img
我尝试过 OpenCV 中的 cvFindContours 函数,以在 Canny-edge-decctting 后获取单独的边缘。 我的问题是如何自己做与 cvFindcontours 相同的事情。
假设 Canny 边缘检测器成功检测到图像中的边缘。然后将边缘旋转 θ,其中原始边缘上的点 (x,y)(x,y) 与旋转边缘上的点 (x′,y) 之间的关系′)(x′,y′)定义为x′ = xcosθ
我想从 canny edge map 中找到并标记端点。 我试图通过只与一个邻居查看点来自己做,但此时的结果很奇怪。 OpenCV 中有查找端点的函数吗? 来自原始 Canny 的样本: 放大示例:
我正在尝试使用 Canny 过滤器检测图像的边缘。我已经能够检测到图像,但角落不是很尖锐(以红色圆圈突出显示)。令人惊讶的是,与其他角相比,第一个角很锋利并且没有烧坏。为什么会发生这种情况以及如何避免
我有 Canny 检测到的边缘。我想提取边缘的轮廓。 我已经检查了以下帖子。 OpenCV converting Canny edges to contours . 但它没有处理复杂的形状。例如,带矩
是否可以制作Canny忽略短边还是忽略低梯度边?在我的例子中,我将卡片放在木头上,并在 canny 之后看到木结构的许多边缘 canny 函数中的两个阈值有什么用? 最佳答案 Large intens
我是一名优秀的程序员,十分优秀!