[OpenCv-python 기초 사용법] 색공간 변경하기, 추적하기

2018. 6. 2. 20:15카테고리 없음

색공간 변경하기, 추적하기



색공간 변경하기

이번에는 BGR을 Gray, BGR을 HSV로 변경시켜 보겠다. hsv란 BGR은 파란색, 초록색, 빨간색의 강도에 따라 색을 정하는 반면 HSV는 색상(Hue), 채도(Saturation), 명도(Value)의 조합으로 색이 정해진다.



참고 이미지





예제 코드
import cv2
import numpy as np

blue = np.uint8([[[255, 0, 0]]])
green = np.uint8([[[0, 255, 0]]])
red = np.uint8([[[0, 0, 255]]])

HSV_R = cv2.cvtColor(red, cv2.COLOR_BGR2HSV)
HSV_G = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
HSV_B = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV)

print('HSV Blue', HSV_B)
print('HSV Green', HSV_G)
print('HSV Red', HSV_R)




웹캠으로 색공간 추적하기

import cv2
import numpy as np

cap = cv2.VideoCapture(0)



while True:
    ret, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    Bmask = cv2.inRange(hsv, np.array([100, 80, 80]), np.array([140, 255, 255])) 각각의 범위 지정 
    Gmask = cv2.inRange(hsv, np.array([35, 80, 80]), np.array([80, 255, 255]))
    Rmask = cv2.inRange(hsv, np.array([-10, 100, 100]), np.array([10, 255, 255]))

    B = cv2.bitwise_and(frame, frame, mask=Bmask)

    G = cv2.bitwise_and(frame, frame, mask=Gmask)

    R = cv2.bitwise_and(frame, frame, mask=Rmask)
    cv2.imshow('original', frame)
    cv2.imshow('blue', B)
    cv2.imshow('green', G)
    cv2.imshow('red', R)

    k = cv2.waitKey(1)
    if k == 27:
        break


cv2.destroyAllWindows()


결과물


초록 파랑색






빨강색