[python] OpenCV를 사용하여 이미지에서 선 감지하기

이미지 처리를 위한 라이브러리인 OpenCV는 컴퓨터 비전 및 영상 처리에 널리 사용되며, 선이나 경계를 감지하는 데에도 효과적입니다. 이번 포스트에서는 OpenCV를 사용하여 이미지에서 선을 감지하는 방법을 알아보겠습니다.

1. OpenCV 설치하기

먼저, 파이썬에서 OpenCV를 사용하기 위해 다음 명령어를 사용하여 OpenCV를 설치해야 합니다.

pip install opencv-python

2. 이미지 불러오기

선을 감지하기 위해서는 먼저 대상 이미지를 불러와야 합니다. 이를 위해 OpenCV의 imread() 함수를 사용합니다. 다음은 이미지를 불러오는 예제 코드입니다.

import cv2

# 이미지 파일 경로
image_path = 'image.jpg'

# 이미지 불러오기
image = cv2.imread(image_path)

# 이미지 출력
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 이미지 전처리

선을 감지하기 전에 이미지를 전처리하는 단계가 필요할 수 있습니다. 예를 들어, 이미지를 그레이스케일로 변환하거나, 노이즈를 제거하는 등의 작업을 수행할 수 있습니다.

# 이미지를 그레이스케일로 변환
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 노이즈 제거를 위한 가우시안 필터 적용
blur_image = cv2.GaussianBlur(gray_image, (5, 5), 0)

4. 선 감지하기

이제 이미지를 전처리한 후, 선을 감지하는 알고리즘을 적용할 차례입니다. OpenCV는 다양한 선 감지 알고리즘을 제공합니다. 여기서는 Hough 변환을 사용하여 선을 감지하는 예제 코드를 살펴보겠습니다.

# Hough 변환을 사용하여 선 감지
lines = cv2.HoughLinesP(blur_image, 1, np.pi/180, threshold=50, minLineLength=50, maxLineGap=10)

# 감지된 선들을 이미지 위에 그리기
for line in lines:
    x1, y1, x2, y2 = line[0]
    cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2)

# 결과 이미지 출력
cv2.imshow('Lines Detected Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. 결과 확인하기

위 코드를 실행하면 선이 감지된 이미지를 확인할 수 있습니다. 예를 들어, input 이미지가 다음과 같다면,

input 이미지

다음과 같이 선이 감지된 결과 이미지를 얻을 수 있습니다.

감지된 선 이미지

이제 여러분은 OpenCV를 사용하여 이미지에서 선을 감지하는 방법에 대해 알게 되었습니다. 다양한 이미지 처리 작업에 OpenCV를 유용하게 활용해보세요!