我面临一些关于图像边缘检测的一般问题(图像应该与我的问题无关)。你知道吗
我希望canny边缘检测器忽略某个像素值。例如:仅当灰度值不为0时才应查找边。否则将检测到“假边”。你知道吗
我通常使用cv2.canny函数,它运行得很快也很好。问题是,它是不可定制的。所以我用这个定制canny边缘检测器(https://rosettacode.org/wiki/Canny_edge_detector#Python)的代码来定制它。它可以工作,但是它计算边缘的速度太慢了(需要几分钟,而cv2.canny函数只需要几分之一秒)。 这是我的第一个问题。你知道吗
有没有其他方法使cv2.canny函数“忽略”某个值的像素。想象一下图片中的某个地方是一个充满黑色的区域(如下图所示)。我不想让边缘探测器探测到这个黑色区域的边缘。
提前谢谢
这里有一个方法:
像往常一样使用fast OpenCV函数计算您的Canny。
现在定位图像中所有的黑色像素-你可以用
_,thr = cv2.threshold(im,1,255,cv2.THRESH_BINARY)
来做这件事,并用形态学将这些区域扩展1个像素,以允许边缘像通常那样偏移一点。将正常的Canny图像与您创建的遮罩相乘,这样在黑色区域中找到的任何图像都将被零相乘,即丢失。
相关问题 更多 >
编程相关推荐