1

我必须从图像中检测适当的矩形(满足门的面积和纵横比条件)才能在其中找到门。所以我使用精明的边缘检测来找到边缘,然后我使用霍夫变换来提取边缘的线条。我得到的结果如下图所示: 在此处输入图像描述

现在我以某种方式提取了构成满足“门条件”的矩形的线条。但正如您在图像中看到的那样,线条非常接近,以至于它形成了许多满足我门条件的矩形。所以我想我会通过用平均线替换接近线来减少线条,但我无法做到,因为它变得更加复杂。我尝试过这样的事情。

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 中平均关闭线。或者关于从线条中提取正确矩形以找到我的门的任何其他想法?

PS:我有每条线与原点的距离,即rho。我的线条被隔离为几乎水平和几乎垂直的线条。

4

0 回答 0