我正在Python中寻找一个多边形检测库,它不是通过边缘检测器和轮廓在OpenCV中实现的(这给了我不令人满意的结果)。
在 OpenCV 中,我使用灰度 Canny 边缘检测器来查找轮廓及其近似值,但存在相当多的伪影,并且根本没有检测到一些巨大的物体。 我尝试使用 cv.Canny()、cv.approxPolyDP 以及高斯模糊和/或膨胀的各种值来尝试此过程。
期望的结果应该主要检测四边形和三角形:门、窗和屋顶。
您可能想要弄乱阈值1和阈值2,如此处所述。这些是降噪的超参数。下面,我手动调整阈值,您可以看到它们给出了不同的结果。
您可以做的另一件事是,考虑到您说您对图像进行了灰度化。好吧,在这种情况下,如果您进行灰度处理,则根本不会检测到不同颜色但恰好具有相同亮度的相邻像素(例如,红色像素和绿色像素可能具有相同的亮度) ,因此在灰度下查看它们看起来是一样的)。对图像进行灰度化的目的在技术上只是将图像降级为一个通道(而不是 3 个通道:红、绿、蓝)。因此,您可以尝试降级图像的一件事是,首先从 RGB 转换为 HSL,然后将 Canny 应用于 Hue 通道。
希望这有帮助!