关于(canny)边缘检测的一般问题

2024-10-02 06:30:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临一些关于图像边缘检测的一般问题(图像应该与我的问题无关)。你知道吗

  1. 我希望canny边缘检测器忽略某个像素值。例如:仅当灰度值不为0时才应查找边。否则将检测到“假边”。你知道吗

    我通常使用cv2.canny函数,它运行得很快也很好。问题是,它是不可定制的。所以我用这个定制canny边缘检测器(https://rosettacode.org/wiki/Canny_edge_detector#Python)的代码来定制它。它可以工作,但是它计算边缘的速度太慢了(需要几分钟,而cv2.canny函数只需要几分之一秒)。 这是我的第一个问题。你知道吗

    有没有其他方法使cv2.canny函数“忽略”某个值的像素。想象一下图片中的某个地方是一个充满黑色的区域(如下图所示)。我不想让边缘探测器探测到这个黑色区域的边缘。

enter image description here

  1. 一旦我在图像中检测到一些清晰的边缘,我想基于这些边缘创建遮罩。我在网上找不到任何这样的例子。所以如果有人知道在哪里可以找到一个关于如何从边缘创建面具的好教程,如果你能帮助我就太好了。你知道吗

提前谢谢


Tags: 函数httpsorg图像区域wiki像素cv2
1条回答
网友
1楼 · 发布于 2024-10-02 06:30:57

这里有一个方法:

  • 像往常一样使用fast OpenCV函数计算您的Canny。

  • 现在定位图像中所有的黑色像素-你可以用_,thr = cv2.threshold(im,1,255,cv2.THRESH_BINARY)来做这件事,并用形态学将这些区域扩展1个像素,以允许边缘像通常那样偏移一点。

  • 将正常的Canny图像与您创建的遮罩相乘,这样在黑色区域中找到的任何图像都将被零相乘,即丢失。

相关问题 更多 >

    热门问题