[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) 계산하기 (직류, 교류 단상, 교류 삼상)

공압 속도 제어: 미터인 vs 미터아웃

[PLC] 채터링 현상과 입력 필터

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

[python] 파이썬 pyplot 2차원 그래프 샘플 코드

[PLC] 래더 다이어그램과 PLC

공압회로 기호

[PLC] PLC 입출력 타입 - 싱크 & 소스 (Sink & Source)

[암호화폐 자동매매] pip install ta-lib 설치오류 해결