bkshin.tistory.com/entry/OpenCV-6-dd
OpenCV - 6. 이미지 내 관심영역(Region of Interest, ROI) 표시
이번 포스팅에서는 이미지 내에서 관심 영역(Region of Interest, ROI)을 표시하는 방법에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝
bkshin.tistory.com
관심 영역(ROI)이란 말 그대로 영상 내에서 관심이 있는 영역을 뜻합니다. 아래는 일몰 사진입니다. 일몰 사진 내에서 원하는 영역을 표시하는 방법에 대해 살펴보겠습니다.
import cv2
import numpy as np
img = cv2.imread('./img/sunset.jpg')
x=320; y=150; w=50; h=50 # roi 좌표
roi = img[y:y+h, x:x+w] # roi 지정 ---①
print(roi.shape) # roi shape, (50,50,3)
cv2.rectangle(roi, (0,0), (h-1, w-1), (0,255,0)) # roi 전체에 사각형 그리기 ---②
cv2.imshow("img", img)
key = cv2.waitKey(0)
print(key)
cv2.destroyAllWindows()
cv2.imread() 함수를 실행하면 이미지를 numpy 배열로 반환합니다. numpy 배열은 슬라이싱(slicing)이 가능합니다. 원하는 영역을 지정하기 위해서는 이미지 numpy 배열을 슬라이싱 하면 됩니다. 위 코드에서 img[y:y+h, x:x+w]는 원하는 영역을 슬라이싱 합니다. 즉, roi 변수에는 관심 영역인 태양을 슬라이싱 한 numpy 배열이 담깁니다.
cv2.rectangle(roi, (0,0), (h-1, w-1), (0,255,0))은 태양 부분만 슬라이싱 한 roi 이미지의 (0, 0)부터 (h-1, w-1)까지 (0, 255, 0) 색으로 사각형을 표시하는 코드입니다. (0, 0)은 좌측 상단이며, (h-1, w-1)은 우측 하단입니다. roi 이미지의 좌측 상단부터 우측 하단까지를 꼭짓점으로 갖는 사각형을 그려준다는 것입니다. RGB 값인 (0, 255, 0)은 녹색을 나타냅니다.
관심 영역인 roi를 따로 지정하지 않았다면 이 코드는 다음과 같게 됩니다.
'opencv' 카테고리의 다른 글
행렬의 필요성 (0) | 2021.06.15 |
---|---|
numpy 의 기본적인 사용법 (0) | 2021.06.02 |
캐니엣지 (0) | 2021.04.08 |
허프라인 (0) | 2021.04.06 |
이미지 블러 공부하자 (0) | 2021.04.05 |