관심영역(ROI)이란, 영상이나 이미지에서 특정 부분만을 선택해 집중적으로 처리하는 영역을 말합니다.
전체 이미지를 대상으로 연산하는 대신, 관심 있는 영역만 잘라서 작업하면 처리 속도와 정확도를 모두 높일 수 있습니다.
아래는 휴가 기간에도 과제를 하고 있는 불쌍한 강아지의 사진입니다.

이 이미지에서 특정 부분(예: 학생의 얼굴이나 노트북 화면 등)만 ROI로 지정해 표시하는 방법을 살펴보겠습니다.
아래 코드를 실행하면 강아지 주위를 초록색 사각형으로 표시한 이미지가 생성됩니다.
import cv2
import numpy as np
img = cv2.imread(r"C:\\Users\\danny\\Desktop\\Sorry to bother you but can you make the lecture slides?.png")
# 관심 영역 좌표 (왼쪽 위 x, y, 너비 w, 높이 h)
x, y, w, h = 630, 100, 200, 200
# 1) ROI 추출 (슬라이싱)
roi = img[y:y+h, x:x+w] # shape: (h, w, 3)
print("ROI shape:", roi.shape)
# 2) ROI 전체에 사각형 그리기 (roi 좌표계 기준: (0,0) ~ (w-1, h-1))
cv2.rectangle(roi, (0, 0), (w-1, h-1), (0, 255, 0), 2)
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드는 고정 좌표로 ROI를 표시한 예제입니다.
x, y, w, h = 630, 100, 200, 200
x,y는 관심 영역의 픽셀 위치, w,h는 가로 세로 픽셀 길이를 의미합니다.
cv2.imread()는 이미지를 NumPy 배열로 불러옵니다. 이미지는 배열이므로 슬라이싱(slicing)으로 원하는 부분만 선택할 수 있습니다. 예를 들어 img[y:y+h, x:x+w]는 지정한 좌표의 영역을 잘라내어 roi에 저장합니다.
cv2.rectangle(roi, (0,0), (w-1,h-1), (0,255,0))
위 코드는 ROI 전체에 녹색 사각형을 그려 시각적으로 표시하는 코드입니다.
cv2.rectangle(img, (x, y), (x+w, y+h), (0,255,0))