상세 컨텐츠

본문 제목

특정 색상 영역 추출 하기

영상처리/OpenCV Python

by cepiloth 2021. 5. 25. 11:39

본문

728x90
반응형

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

RGB 색 공간에서 특정색을 추출할 때는 영상의 밝기에 따라 오차가 발생하는 것을 눈으로 확인할 수 있다.

 

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

V 의 값에 대해서 Don't Care를 하여서 순수한 색상에서만 찾도록 했을 때  HSV 공간에서 특정색을 찾는 것이 RGB 색 공간보다 오차율이 적은 것을 알 수 있다.

 

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

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

 

inrange2.py

import sys
import numpy as np
import cv2


src = cv2.imread('candies.png')

if src is None:
    print('Image load failed!')
    sys.exit()

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()

cv2.destroyAllWindows()

728x90
반응형

관련글 더보기

댓글 영역