[英]How can I remove noise with Hough Line Transform with opencv-python
該程序的目的是將 map 移出房間的角落和邊緣,這就是我現在所處的位置: 右上角的圖像是我的結果,左上角的圖像是我的輸入。 目前,我正在使用帶有高斯濾波器的精明邊緣檢測。 但正如你所看到的,圖像中有很多來自其他細節的隨機線條。
我的目標是這樣的:
到目前為止,我已經嘗試過,只顯示平坦的線(0 或無限斜率):
if lines is not None:
for line in lines:
x1, y1, x2, y2 = line[0]
if math.isclose(x1, x2, tol_abs=25) or math.isclose(y1, y2, tol_abs=10):
cv2.line(bgrimg, (x1, y1), (x2, y2), (0, 255, 0), 1)
但這導致我失去了一些重要的台詞。 接下來,我嘗試只在圖像邊緣顯示線條:
if lines is not None:
for line in lines:
x1, y1, x2, y2 = line[0]
if y1 > 100 and y2 > 100:
cv2.line(bgrimg, (x1, y1), (x2, y2), (0, 255, 0), 1)
這有點適用於頂部,但由於側面可能在圖片中的任何位置,我無法確定它們的確切位置。
有沒有辦法解決這個問題? 如果沒有,機器學習是否有可能?
從Canny得到的信息開始。 可以:
1 - 確定水平線的良好參考,
2 - 確定右對角線的良好參考
3 - 確定左對角線的良好參考
4 - 從這些參考線的延伸中,您可以找到交叉點。
有些路口會很好,有些則不好。
如果水平基准線和斜基准線形成的角度左右相同或相似,則為良好的交點。
正如我在這里添加的圖片: https://i.stack.imgur.com/OYS2c.png
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.