본문 바로가기
OpenCV

OpenCV 영상처리 - 특정 색상 영역 추출(cv2.inRange)

by Kwonys 2024. 3. 18.
728x90
반응형

RGB 색 공간에서 녹색 영역 추출하기

 

HSV 색 공간에서 녹색 영역 추출하기


밝기가 어두운 영상에서의 특정 영역 추출

 

RGB 색 공간에서 녹색 영역 추출하기

* RGB 색 공간에서 특정 영역을 추출 하는 경우 밝기에 영향을 받음

 

HSV 색 공간에서 녹색 영역 추출하기

* HSV 색 공간에서는 밝기에 비교적 영향을 받지 않는다.

 

특정 범위 안에 있는 행렬 원소 검출

cv2.inRange(src, lowerb, upperb, dst=None) -> dst
  • src : 입력 행렬
  • lowerb : 하한 값 행렬 또는 스칼라
  • upperb : 상한 값 행렬 또는 스칼라
  • dst : 입력 영상과 같은 크기의 마스크 영상. (numpy.uint8) 범위 안에 들어가는 픽셀은 255, 나머지는 0으로 설정.
src = cv2.imread('candies.png')

src_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

dst1 = cv2.inRange(src, (0, 128, 0), (100, 255, 100))
dst2 = cv2.inRange(src_hsv, (50, 150, 0), (80, 255, 255))

cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()

cv2.destroyAllWindows()
  • 실행결과:

기본 영상(src)

 

왼쪽  : RGB 녹색 영역 추출 / 오른쪽 : HSV 녹색 영역 추출

 

 

트랙바를 이용한 특정 색상 영역 추출

특정 색상 영역 추출

src = cv2.imread('candies.png')
src_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

def on_trackbar(pos):
    hmin = cv2.getTrackbarPos('H_min', 'dst')
    hmax = cv2.getTrackbarPos('H_max', 'dst')
    
    dst = cv2.inRange(src_hsv, (hmin, 150, 0), (hmax, 255, 255))
    cv2.imshow('dst', dst)

cv2.imshow('src', src)
cv2.namedWindow('dst')

cv2.createTrackbar('H_min', 'dst', 50, 179, on_trackbar)
cv2.createTrackbar('H_max', 'dst', 80, 179, on_trackbar)
on_trackbar(0)
cv2.waitkey()
  • ex) 녹색 영역 추출
728x90
반응형