ドアを見つけるには、画像から適切な長方形 (ドアの面積と縦横比の条件を満たす) を検出する必要があります。そこで、キャニー エッジ検出を使用してエッジを検出し、ハフ トランスフォームを使用してエッジの線を抽出しました。そして、私は下の画像のような結果を得ました: ここに画像の説明を入力してください
ここで、「ドア条件」を満たす長方形を形成する線を何とか抽出しました。しかし、画像でわかるように、線が非常に接近しているため、多くの長方形を形成しており、私のドアの条件を満たしています。そのため、近い線を平均線に置き換えて線を減らすことを考えましたが、はるかに複雑になっているため、それを行うことができません。私はこのようなものを試しました。
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:原点、つまりローからのすべての線の距離があります。そして、ほぼ水平の線とほぼ垂直の線として分離された線があります。