본문 바로가기
Data Science/2) Open CV

[Python] OpenCV ROI 처리 해보기

by 은구잇 2021. 12. 2.
728x90

OpenCV에서 ROI(Region of Interest) 관심있는 영역을 추출해보자.

 

 

1. 간단한 ROI 방법

import cv2

import matplotlib.pylot as plt

 

image = cv2.imread('./images/cat.jpg')

roi = image[200:350,50:200] # 이미지 파일을 읽어와서 슬라이싱

 

image[0:150, 0:150] = roi  # 이미지 해당 부분을 roi 값으로 채워주기

 

plt.imshow(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))

plt.show()

 

 

 

2. ROI(Region Of Interest)의 평균값으로 이미지 나타내기

src로 원본 이미지의 속성을 받아온 뒤, src의 크기와 데이터 타입과 같은 0으로 채워진 dst를 생성해준다.

나눌 블록의 크기를 w * h로 설정하고 x, y는 왼쪽 상단부터의 좌표를 나타낸다.

 

roi = src[y:y + h, x:x + w]는 원본 영상의 ROI를 계산해 그 평균값을 계산한다.

평균값을 타나내는 것으로 N의 값이 커질수록 원본 영상과 비슷해지고 N이 작을수록 원본 영상의 전체 평균 값과 비슷해져 구분하기 어려워진다.

 

N = 100
N = 256

3. 마우스로 ROI 영역 나타내기

 

이미지가 생성된 뒤 원하는 영역을 마우스로 클릭하게 되면 해당 영역만

선택되어 새로운 이미지가 생성된다.

그 후 생성된 이미지들을 모두 종료하면 해당 영역의 ROI 값이 출력되게 된다.

 

 

4.마우스로 다중 ROI 영역 나타내기

 

다중영역은 cv2.selectROIs('src', src, False, True)  

이것을 사용한다.

 

하나의 박스를 생성한 후, 엔터를 누르고 또 다른 박스를 생성하고
esc를 누르면 선택한 다중 영역이 화면에 표시되고 해당 영역의 ROI값이 출력된다