是否有任何方法来平均在houghlines中检测到的闭合线?

2024-10-01 00:14:28 发布

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

我必须从图像中检测合适的矩形(满足门的面积和纵横比条件)才能在其中找到门。因此,我使用canny边缘检测找到边缘,然后使用hough变换提取边缘线。我得到的结果如下图所示: enter image description here

现在我以某种方式提取了构成矩形的线,这些线满足“门条件”。但正如你在图中看到的,这些线非常接近,形成了许多矩形,满足了我的门条件。所以我想我会通过用平均线代替封闭线来减少线,但我无法做到,因为它变得越来越复杂。我试过这样的东西

def segregateLines(tobesegLines):
    while True:
        noLinesLeft = True
        for i in range(0 , len(tobesegLines)):
            closeLineFound = False
            for j in range(0, len(tobesegLines)):
                if abs(tobesegLines[i][0][0] - tobesegLines[j][0][0]) < 50:
                    closeLineFound = True
                    noLinesLeft = False
                    newLines.append([[(abs(tobesegLines[i][0][0] +tobesegLines[j][0][0])) /2, tobesegLines[i][0][1]]])

            if not closeLineFound:
                newLines.append(tobesegLines[i])

        if noLinesLeft:
            break
        segregateLines(newLines)
    return newLines

但是我得到了“内存错误”。有没有人知道如何在python中平均接近的行数。或者关于从线条中提取正确的矩形来找到我的门的其他想法

附言:我有每条线到原点的距离,即ρ。我把线分为水平线和垂直线


Tags: infalsetrueforlenifrange条件