Python是一種功能強大的編程語言,在計算機視覺中,它可以用來實現多種算法。其中,霍夫直線就是一種非常常見的算法。霍夫直線是通過霍夫變換來檢測圖像中所有直線的算法,廣泛應用于不同的領域,如圖像處理、車道線檢測和對象跟蹤等。
# 導入必要的庫 import cv2 import numpy as np # 讀取圖像并轉換為灰度圖像 img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 應用邊緣檢測算法 edges = cv2.Canny(gray, 50, 150) # 應用霍夫直線變換 lines = cv2.HoughLines(edges, 1, np.pi/180, 200) # 繪制檢測到的直線 for line in lines: rho, theta = line[0] a = np.cos(theta) b = np.sin(theta) x0 = a * rho y0 = b * rho x1 = int(x0 + 1000 * (-b)) y1 = int(y0 + 1000 * (a)) x2 = int(x0 - 1000 * (-b)) y2 = int(y0 - 1000 * (a)) cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2) # 顯示結果 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
在這段代碼中,先利用cv2.imread()函數讀取圖像,并使用cv2.cvtColor()函數將其轉換為灰度圖像。然后,通過應用邊緣檢測算法(這里使用的是Canny算法),得到一張只包含邊緣的圖像。接下來,使用cv2.HoughLines()函數對圖像進行霍夫直線變換,檢測到所有的直線。最后,使用cv2.line()函數繪制檢測到的直線,并使用cv2.imshow()函數展示最終結果。
在實際應用中,霍夫直線是一種非常有用的算法。例如,在自動駕駛中,可以通過檢測車道線來實現車輛的自主行駛。此外,它還可以用于檢測圖像中其他幾何圖形,如圓和橢圓。