본문 바로가기

카테고리 없음

Python OpenCV로 이미지 좌표 추출 및 활용하기

by 공부하는 40대 2024. 10. 6.

반응형

안녕하세요, Python과 OpenCV를 사용하여 이미지에서 좌표를 추출하고 활용하는 방법에 대해 배워보는 시간을 가져보겠습니다. OpenCV는 컴퓨터 비전을 위한 강력한 라이브러리로, 이미지 처리, 얼굴 인식, 객체 추적 등 여러 분야에 활용됩니다.

이번 글에서는 일반 대중도 쉽게 따라할 수 있도록 친근하면서도 전문적인 내용을 다루고자 합니다. 각 주제마다 예제를 통해 이해를 돕겠습니다.

OpenCV란 무엇인가?

OpenCV는 'Open Source Computer Vision Library'의 약자로, 다양한 컴퓨터 비전 응용을 쉽게 개발할 수 있도록 도와주는 오픈 소스 라이브러리입니다. C++, Python 등 여러 프로그래밍 언어에서 사용할 수 있으며, 이미지나 비디오 파일을 효율적으로 처리할 수 있는 풍부한 기능을 제공합니다.

OpenCV 설치하기

OpenCV를 설치하는 방법은 매우 간단합니다. Python이 설치된 환경에서는 명령어 한 줄로 설치할 수 있습니다. 터미널이나 명령 프롬프트에서 아래 명령어를 입력하세요:

pip install opencv-python

위 명령어를 통해 기본적인 OpenCV 기능을 사용할 수 있습니다. **이미지 좌표 추출** 과 같은 기능은 이 기본 패키지를 사용하면 충분합니다.

OpenCV로 이미지 좌표 추출하기

이미지에서 특정 좌표를 추출하는 것은 여러 컴퓨터 비전 작업의 기본입니다. 예를 들어 얼굴의 특징점 좌표를 추출하여 얼굴 인식의 기초 데이터를 얻는 것이 그 예입니다.

이미지 불러오기

첫 번째 단계는 이미지를 불러오는 것입니다. OpenCV에서는 cv2.imread() 함수를 사용하여 이미지를 쉽게 불러올 수 있습니다. 다음은 예제 코드입니다:

import cv2

# 이미지 파일 경로
img_path = 'example.jpg'

# 이미지 읽기
image = cv2.imread(img_path)

# 이미지 크기 확인
print(f"Image Dimensions: {image.shape}")

위 코드는 OpenCV를 사용하여 'example.jpg' 이미지를 불러오고 그 크기를 출력합니다.

이미지에서 좌표 추출하기

좌표 추출의 기본 작업은 이미지 내 픽셀의 위치 정보를 얻는 것입니다. 이를 위해 OpenCV는 다양한 함수를 제공하며, 여기서는 **마우스 콜백 함수**를 이용해보겠습니다.

def mouse_callback(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        # 클릭한 좌표 출력
        print(f"Clicked at: ({x}, {y})")

cv2.namedWindow('Image')
cv2.setMouseCallback('Image', mouse_callback)

while True:
    cv2.imshow('Image', image)
    if cv2.waitKey(1) & 0xFF == 27:  # ESC 키로 종료
        break

cv2.destroyAllWindows()

이 코드는 이미지를 창에 보여주고, **마우스 왼쪽 버튼**을 클릭했을 때 이미지 내 클릭 위치의 좌표를 출력합니다.

좌표 활용하기

추출한 좌표 정보를 활용하면 다양한 이미지 처리 작업을 수행할 수 있습니다. 예를 들어 이미지 내 특정 객체의 위치를 추적하거나, 관심 영역을 따로 처리하는 등 여러가지 활용이 가능합니다.

아래는 추출한 좌표를 이용하여 이미지에 텍스트를 삽입하는 예제입니다:

def mouse_callback(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.putText(image, f"Point({x}, {y})", (x+10, y+10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 1)
        cv2.imshow('Image', image)

cv2.namedWindow('Image')
cv2.setMouseCallback('Image', mouse_callback)

while True:
    cv2.imshow('Image', image)
    if cv2.waitKey(1) & 0xFF == 27:  # ESC 키로 종료
        break

cv2.destroyAllWindows()

이번에는 클릭한 좌표 근처에 텍스트를 출력하여 해당 좌표를 시각적으로 확인할 수 있도록 했습니다.

마무리


지금까지 Python OpenCV를 사용하여 이미지의 좌표를 추출하고 활용하는 기본적인 방법을 살펴보았습니다. **이미지 좌표 추출**은 다양한 컴퓨터 비전 응용의 출발점이 될 수 있습니다. 앞으로 더 많은 기능을 배우고 자신만의 프로젝트에 응용해 보세요.

이 블로그 글이 OpenCV 사용에 대한 기초를 다지는 데 도움이 되었기를 바랍니다. 다음 글에서는 OpenCV를 사용한 더 고급화된 이미지 처리 기능에 대해 다뤄보겠습니다.

반응형