[python] 파이썬 OpenCV 4 Color-Space를 활용한 Object Tracking 개념

 파이썬과 OpenCV4의 Color-Space 변환을 활용하여 Object Tracking의 기초적인 개념을 알 수 있는 샘플 코드입니다. 아래 코드는 카메라로부터 BGR 이미지 프레임을 캡처하여 HSV Color-Space로 변환하고, 파란색 계열의 색상을 포함한 부분만 마스크 처리 및 연산하는 과정을 담고 있습니다.


import cv2 as cv
import numpy as np

# 웹캠 연결
cap = cv.VideoCapture(0)

while(1):
    # 웹캠으로부터 BGR 프래임 캡쳐
    _, frame = cap.read()

    # 컬러스페이스 변경 : BGR -> HSV
    hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)

    # HSV 컬러 스페이스에서 추출할 영역 설정 (파란색 계열)
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])

    # 마스크 추출
    mask = cv.inRange(hsv, lower_blue, upper_blue)

    # 원본 프레임 이미지와 마스크를 Bitwise-AND 연산
    res = cv.bitwise_and(frame,frame, mask= mask)

    # 화면 출력
    cv.imshow('frame',frame)
    cv.imshow('mask',mask)
    cv.imshow('res',res)

    # ESC키 종료 처리
    k = cv.waitKey(5) & 0xFF
    if k == 27:
        break

# 종료 처리
cv.destroyAllWindows()


아래는 실행결과입니다. 원본과 마스크 화면입니다.


아래는 연산결과입니다.


위 코드에서 HSV 컬러 스페이스는 색 범위 지정에 용이하기 때문에 사용되었습니다. 또한 결과물은 Object Tracking이라 지칭하기가 무색할 정도로 많은 노이즈를 포함하고 있습니다. 노이즈 제거에 대한 내용은 향후 업데이트 예정입니다.


끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

NPN, PNP 트랜지스터 차이점

3선 결선식 센서의 타입 PNP, NPN

제너 다이오드에 저항을 연결하는 이유

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

커패시터에 저장된 에너지 계산

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

[공압밸브] 5포트 2웨이 & 4포트 2웨이, 단동 VS 복동 차이점

SSR과 기계식 릴레이 차이점