从图像中检测图像多边形

问题描述 投票:0回答:1

我正在Python中寻找一个多边形检测库,它不是通过边缘检测器和轮廓在OpenCV中实现的(这给了我不令人满意的结果)。

在 OpenCV 中,我使用灰度 Canny 边缘检测器来查找轮廓及其近似值,但存在相当多的伪影,并且根本没有检测到一些巨大的物体。 我尝试使用 cv.Canny()、cv.approxPolyDP 以及高斯模糊和/或膨胀的各种值来尝试此过程。

期望的结果应该主要检测四边形和三角形:门、窗和屋顶。

原图1:

期望结果1(检测到屋顶、门窗):

OpenCV结果1:

原图2:

期望的结果2:

OpenCV结果2:

python opencv image-processing object-detection polygon
1个回答
0
投票

您可能想要弄乱阈值1和阈值2,如此处所述。这些是降噪的超参数。下面,我手动调整阈值,您可以看到它们给出了不同的结果。

您可以做的另一件事是,考虑到您说您对图像进行了灰度化。好吧,在这种情况下,如果您进行灰度处理,则根本不会检测到不同颜色但恰好具有相同亮度的相邻像素(例如,红色像素和绿色像素可能具有相同的亮度) ,因此在灰度下查看它们看起来是一样的)。对图像进行灰度化的目的在技术上只是将图像降级为一个通道(而不是 3 个通道:红、绿、蓝)。因此,您可以尝试降级图像的一件事是,首先从 RGB 转换为 HSL,然后将 Canny 应用于 Hue 通道

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.