모든 이미지의 출처는
인프런 : 컴퓨터 비전 완벽 가이드
에 있으며, 공부 기록용으로 블로그를 작성하는 것입니다.
문제점
엄밀히 말해서는 Region Proposal 방식으로, 영역을 추정하는 방식인데 그 중에서 가장 유명한 기법 중 하나인
selective search
를 설명하겠습니다.
1. selective search 설치
!pip install selectivesearch
2. 이미지 불러오기 및 출력
import selectivesearch
import cv2
import matplotlib.pyplot as plt
import os
img = cv2.imread('/content/sample_data/audrey01.jpeg')
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
print("image shape",img.shape)
plt.figure(figsize=(8,8))
plt.imshow(img_rgb)
plt.show()
3. selectivesearch 사용
import selectivesearch
#scale 크다 -> 큰 object 위주로 찾아라, min_size -> 적어도 min_size 이상의 object 찾아라
#regions -> object가 있을만한 공간
_, regions = selectivesearch.selective_search(img_rgb, scale=100, min_size=2000)
print(type(regions), len(regions))
출력: <class 'list'> 41
4. regions 출력
5. bounding box 그려보기
cand_rects = [cand['rect'] for cand in regions if cand['size'] > 10000] # rects만 가져와서 저장
green_rgb = (125,255,51)
img_rgb_copy = img_rgb.copy() # 그림 카피 뜨기
for rect in cand_rects:
left=rect[0]
top=rect[1]
right = left + rect[2]
bottom = top + rect[3]
img_rgb_copy = cv2.rectangle(img_rgb_copy, (left,top),(right,bottom),color=green_rgb, thickness=2)
#사각형 좌표의 왼쪽 상단, 오른쪽 하단 입력
plt.figure(figsize=(8,8))
plt.imshow(img_rgb_copy)
plt.show()
이렇게 selective search에 대해 알아보았습니다.