10-8. OpenCV 트래커

OpenCV 트래커(Tracker)

    OpenCV 3.0 버전 이후부터 제공되는 클래스로 OpenCV extra modules에서 지원하므로 opencv-contrib-python 패키지를 설치 해야 사용 가능

     > pip uninstall opencv-python

     > pip install opencv-contrib-python(==원하는 설치 버전)

     파이썬을 사용하고 있는 프로그램이 열려있는 경우 닫고 해야 uninstall 및 install이 제대로 이루어질 수 있다.

opencv-contrib-python 모듈을 설치한 모습. 강의에서는 4.1.0.25 버전을 설치하라고 했는데 4.1 버전이 업데이트 되었는지 지금 제공되는 버전은 4.1.2.30인거 같다. 글쓴이는 일단 제공되는 최신 버전(4.5.5.62)으로 설치하였다. 

     4.1 버전 기준으로 8가지 트래킹 알고리즘을 지원된다. 

지원되는 트래킹 알고리즘 종류 (출처:FastCampus)

     Tracker에 대한 자세한 사용 방법 설명은 여기를 참고하면 되며, OpenCV에서 제공하는 설명은 여기를 보면 된다.

    Tracker 클래스 사용 방법

     1. cv2.TrackerXXX_create() -> <TrackerXXX object> 로 TrackerXXX 객체 생성 (XXX에는 Boosting, CSRT(Discriminative Correlation Filter with Cannel and Spatical Reliability), GOTURN, KCF(Kernelized Correlation Filters), MedianFlow, MIL, MOSSE(Minimum Output Sum of Squared Error), TLD가 있다)

     2. <TrackerXXX object>.init(image, boundingBox) -> retval로 초기 한 번만 사각형 ROI를 boundingBox에 제공

     3. <TrackerXXX object>.update(image) -> retval, boundingBox로 새로운 프레임 내 ROI 추적에 성공하면 retval에 True, 아니면 False값을 받으며, 출력된 boundingBox로 추적된 ROI를 확인 가능

     * 예제에는 KCF, CSRT, MOSSE를 테스트 해보는 것이 였는데 글쓴이가 설치한 opencv-contrib-python 패키지의 경우 Boosting, MedinaFlow, MOSSE, TLD가 동작하지 않는거 같다. GOTRUN의 경우 딥러닝을 사용하는 방식이기 때문에 별도의 패키지 세팅이 필요하다. 그래서 KCF, CSRT, MIL로 테스트 해보았다.

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

각 프레임별 ROI 추적 평균값도 재보았다. CSRT가 정확도가 높은데 비해 더 오래 걸리는 것을 볼 수 있다.

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.


10-9. 실전 코딩

핸드 모션 리모컨

    카메라로 손 움직임을 분석하여 상하좌우 방향을 인식

    구현할 기능:     

     1. 움직임이 있는 영역 검출

        - cv2.calcOpticalFlowFarneback() 함수를 이용하여 밀집 옵티컬 플로우를 계산 후 움직임 벡터 크기가 특정 임계값보다 큰 영역 안의 움직임만 고려하고 나머지는 잡음으로 취급한다.

        *Tip. 빠른 연산과 안정성을 위해 입력 영상 크기를 가로 세로 모두 1/2로 줄여서 계산

     2. 움직임이 있는 영역에서 움직임 벡터의 평균 방향 검출

       - 움직임이 있는 영역에서 움직임 벡터의 x와 y방향 성분의 평균 계산 후 벡터의 크기와 방향을 계산

       - 벡터 크기가 일정 임계값보다 큰 경우에만 방향을 계산

방향 계산 수식. 각도에 따라 방향을 결정한다. mx와 my는 움직임 벡터의 x와 y방향 평균값 (출처:FastCampus)

    원래는 카메라로 테스트 하는거지만 PC에는 카메라가 설치되어 있지 않아서 따로 손만 촬영한 영상으로 테스트 해보았다.

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.


인증 타임

트레커의 경우 테스트 해볼 수 없는 종류들이 꽤 있어서 시간 날 때 다른 버전을 설치해서 해보던가 debug 메세지를 좀 더 뜯어봐야할 거 같다. 8가지 모든 트래커를 비교해 볼 수 있으면 더 멋있는 결과 영상을 볼 수 있지 않을까?

핸드 모션 리모컨 같은 경우 4가지 방향을 생각보다 잘 인식하는 것을 볼 수 있었다. 단지 대각선 방향 움직임은 생각을 못했는데 대각선도 표현할 방식이 있을지 생각해봐야할거 같다.

 

10-8. 공부 인증 영상
10-9. 공부 인증 영상


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online

 

패스트캠퍼스(FastCampus) 강의 둘러보러 가기 

   

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.


 

+ Recent posts