2

目前我試圖做這種類型的圖像上線檢測:線檢測蟒蛇從圖片

Original picture taken from my phone

頂部和底部有黑條只是因爲,我拍的照片,不是因爲調整大小或任何東西。

我用下面的代碼:

image = cv2.imread('test_2.jpg') 
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
edges = cv2.Canny(gray, 100, 250) 
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 25, minLineLength=100, maxLineGap=50) 

hough = np.zeros(image.shape, np.uint8) 

for line in lines: 
    x1, y1, x2, y2 = line[0] 
    cv2.line(hough, (x1, y1), (x2, y2), (255, 255, 255), 2) 

cv2.imwrite('hough.jpg', hough) 

而且我得到了在最後的臺詞:

hough.jpg

有沒有我可以使用,這將有助於我什麼概念呢?

我試着改變CannyHoughLinesP不同的參數調用,但它似乎沒有幫助。

編輯:我試圖檢測圖片上的所有線條。 3條水平線以及所有垂直線(交叉或僅在水平線的頂部)以及傾斜線。 我的主要問題是一些垂直線沒有出現,並且每條線都有兩條線,而不是一條線,這正是我需要的。 我想我可以輕鬆處理雙線問題,但我不知道如何處理缺失的線條。

+0

你沒告訴我們你想要的結果是什麼。 –

+0

對不起,這似乎很明顯。我編輯了我的帖子來解釋它。 –

回答

1

霍夫正在尋找邊緣,而你有山脊。這解釋了雙線。

由於您的圖像易於二值化,因此您可以嘗試邊緣細化。你會得到很好的連續的像素,你可以從中推斷出線段。但是,你可能不得不「修復」那些長長的隊伍。

enter image description here

+0

謝謝,我會看看什麼是細線。 –

+0

@Yves Daoust你有上圖的代碼嗎? – Link

+1

@鏈接:對不起,這是用商業軟件製作的。你可以在這裏找到細化的實現:https://github.com/erich666/GraphicsGems/blob/master/gemsiv/thin_image.c –