Processor

【OpenCV】 직선 검출(Line Detection)

작성자 임베디드코리아 작성일26-04-16 22:02 조회115회 댓글0건
< *  직선 검출(Line Detection)  * >

◆ 직선 검출 알고리즘은 허프 변환(Hough Transform)을 활용해 직선을 검출한다.
◆ 허프 변환은 이미지에서 직선을 찾는 가장 보편적인 알고리즘이다.
◆ 이미지에서 선과 같은 단순한 형태를 빠르게 검출할 수 있으며,
    직선을 찾아 이미지나 영상을 보정하거나 복원한다.
◆ 허프 선 변환은 이미지 내의 어떤 점이라도 선 집합의 일부일 수 있다는
    가정하에 직선의 방정식을 이용해 직선을 검출한다.

----< 예제 : Line_Detection.py  >-------------------------------------------------------------------
import numpy as np
import cv2

src = cv2.imread("Image/lena.jpg")
dst = src.copy()
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(gray, 5000, 1500, apertureSize = 5, L2gradient = True)
lines = cv2.HoughLines(canny, 0.8, np.pi / 180, 150, srn = 100, stn = 200, min_theta = 0, max_theta = np.pi)

for i in lines:
    rho, theta = i[0][0], i[0][1]
    a, b = np.cos(theta), np.sin(theta)
    x0, y0 = a*rho, b*rho

    scale = src.shape[0] + src.shape[1]

    x1 = int(x0 + scale * -b)
    y1 = int(y0 + scale * a)
    x2 = int(x0 - scale * -b)
    y2 = int(y0 - scale * a)

    cv2.line(dst, (x1, y1), (x2, y2), (0, 0, 255), 2)
    cv2.circle(dst, (x0, y0), 3, (255, 0, 0), 5, cv2.FILLED)

cv2.imshow("dst", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
--------------------------------------------------------------------------------------------------------