Table of Contents
OpenCV 설치
먼저, OpenCV를 설치해야 합니다. 파이썬의 경우, pip
명령어를 사용하여 쉽게 설치할 수 있습니다.
pip install opencv-python
이미지 오브젝트 추출
이미지에서 특정 오브젝트를 추출하기 위해, 우선 이미지를 로드합니다. OpenCV의 cv2.imread()
함수를 사용하여 이미지를 읽을 수 있습니다.
import cv2
# 이미지 로드
image = cv2.imread('image.jpg')
다음으로, 오브젝트를 추출하기 위해 이미지에서 마스크를 생성합니다. 마스크는 오브젝트와 배경을 분리하기 위해 사용됩니다. OpenCV의 cv2.inRange()
함수를 사용하여 마스크를 생성할 수 있습니다.
import cv2
import numpy as np
# 이미지 로드
image = cv2.imread('image.jpg')
# 마스크 생성
lower_blue = np.array([80, 100, 100])
upper_blue = np.array([120, 255, 255])
mask = cv2.inRange(image, lower_blue, upper_blue)
위 코드에서는 파란색 오브젝트를 추출하기 위해 HSV 색 공간을 사용하였습니다. 파란색 범위는 [80, 100, 100]
에서 [120, 255, 255]
로 설정하였습니다. 따라서 이 범위에 해당하는 색상만 마스크에 포함됩니다.
오브젝트 추적
오브젝트 추적을 위해 cv2.findContours()
함수를 사용합니다. 이 함수는 이미지에서 오브젝트의 외곽선을 찾아줍니다.
import cv2
# 이미지 로드
image = cv2.imread('image.jpg')
# 마스크 생성
lower_blue = np.array([80, 100, 100])
upper_blue = np.array([120, 255, 255])
mask = cv2.inRange(image, lower_blue, upper_blue)
# 오브젝트 추적
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
위 코드에서 cv2.RETR_EXTERNAL
은 오브젝트의 외곽선 중 가장 바깥쪽 외곽선만 반환하도록 설정한 것입니다.
추적한 오브젝트 이동
추적한 오브젝트를 이동시키기 위해, cv2.drawContours()
함수를 사용하여 이미지에 렌더링합니다.
import cv2
# 이미지 로드
image = cv2.imread('image.jpg')
# 마스크 생성
lower_blue = np.array([80, 100, 100])
upper_blue = np.array([120, 255, 255])
mask = cv2.inRange(image, lower_blue, upper_blue)
# 오브젝트 추적
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 추적한 오브젝트 이동
for contour in contours:
# 추적한 오브젝트 위치 추출
x, y, w, h = cv2.boundingRect(contour)
# 오브젝트 이동
new_x = x + 10
new_y = y + 10
# 이동한 오브젝트 그리기
cv2.rectangle(image, (new_x, new_y), (new_x + w, new_y + h), (0, 255, 0), 2)
# 이미지 출력
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
위 코드에서는 추적한 오브젝트의 왼쪽 상단 모서리 좌표에서 10
만큼 이동시킨 위치로 오브젝트를 그립니다. 이러한 방식으로 오브젝트를 이동시킬 수 있습니다.
이제 이미지 내의 오브젝트를 추출하고, 추출한 오브젝트를 이동시키는 방법에 대해 알아보았습니다. 따라서 OpenCV를 사용하여 이미지 오브젝트 추적 및 이동을 쉽게 구현할 수 있습니다.
참고 자료: