tracker 사용
update 함수 사용-> 좌표를 갱신하면서 추적할 것임, 그러기 위해서 앞에서 detection했던 내용들(rects)을 보내줌. 그러면서 트래킹한 값을 objects로 받음
115)
y값만 지정해준 이유는 현재 x가 살짝 흔들려도 위아래로 움직이는 것이 중요하기 때문
116)
사람이 몸을 흔들거나 뒤로 가는 예외 상황이 있을 수 있기 때문에 기존 히스토리의 평균값을 구해서 예외 처리 해주는 것 (사람이 처음 detecting된 좌표 - 이후 detecting되는 좌표)
118~121)
variation이 0보다 작으면 사람이 위로 가는 것이기 때문에 detection=1이면 올라가고 있다고 판단
trackable 클래스
트래킹을 당한 사물들에 대한 객체를 만드는 클래스
tracker 클래스
실제로 트래킹하는 클래스, 4가지 함수로 구성되어 있음
6~10)
생성자로 tracker가 먼저 생성됐을 때 실행됨
13)
maxDisappeared
= detection 된 사물이 더 이상 tracking을 할 수 없을 때, 즉 인식이 불가하다고 판단되는 최대 수
경험치를 50으로 준 이유 ?
= 어떠한 이유들로 detecting을 놓칠 수 있음.
근데 만약 경험치를 주지 않거나 10같은 적은 숫자로 주게 되면, 추적하던 사람을 놓치고 다시 인식이 됐을 때 새로운 사람으로 인식하고 id를 다시 주게 되는 경우 발생
20~35)
tracker 클래스에는 크게 세 가지 기능이 있음
1) resister : 새로 사람이 detection되면 등록
2) deresister : 더 이상 트래킹할 필요가 없을 때 삭제해주는 것
3) update : 대부분의 기능 수행 / 크게 세 가지 기능
3-1) 상황을 보고 새로 들어온 것이 있으면 resister
3-2) 계속 모니터링 하다가 할 필요가 없을 때 deresister
3-3) 트래킹 해야 하는 object를 계속 모니터링 하면서 그에 대한 좌표값과 내용들을 업데이트 해줌 (중요)
1)
클래스를 사용하기 위해서 싸이파이(scipy) 라는 라이브러리 설치 필요
-> 과학이나 수학 계산에 필요한 라이브러리 / 유클리드 distance(좌표와 좌표 간의 거리)를 계산하기 위해 사용
object tracking을 위해 센트로이드 알고리즘을 사용
39)
InputCentroids는 새로 rect라고 해서 들어온 배열로 넘파이 제로를 이용해 다 0으로 마킹
-> rect에 들어온 것의 개수(갈이)만큼 배열을 세우고 그게 뭐가 될 지 모르기 때문에 비워두는 것
104~105)
tracker 사용 update 함수 사용-> 좌표를 갱신하면서 추적할 것임, 그러기 위해서 앞에서 detection했던 내용들(rects)을 보내줌. 그러면서 트래킹한 값을 objects로 받음
115)
y값만 지정해준 이유는 현재 x가 살짝 흔들려도 위아래로 움직이는 것이 중요하기 때문
116)
사람이 몸을 흔들거나 뒤로 가는 예외 상황이 있을 수 있기 때문에 기존 히스토리의 평균값을 구해서 예외 처리 해주는 것 (사람이 처음 detecting된 좌표 - 이후 detecting되는 좌표)
118~121)
variation이 0보다 작으면 사람이 위로 가는 것이기 때문에 detection=1이면 올라가고 있다고 판단
trackable 클래스 트래킹을 당한 사물들에 대한 객체를 만드는 클래스
tracker 클래스 실제로 트래킹하는 클래스, 4가지 함수로 구성되어 있음
6~10)
생성자로 tracker가 먼저 생성됐을 때 실행됨
13)
maxDisappeared = detection 된 사물이 더 이상 tracking을 할 수 없을 때, 즉 인식이 불가하다고 판단되는 최대 수
경험치를 50으로 준 이유 ? = 어떠한 이유들로 detecting을 놓칠 수 있음. 근데 만약 경험치를 주지 않거나 10같은 적은 숫자로 주게 되면, 추적하던 사람을 놓치고 다시 인식이 됐을 때 새로운 사람으로 인식하고 id를 다시 주게 되는 경우 발생
20~35)
tracker 클래스에는 크게 세 가지 기능이 있음
1) resister : 새로 사람이 detection되면 등록 2) deresister : 더 이상 트래킹할 필요가 없을 때 삭제해주는 것
3) update : 대부분의 기능 수행 / 크게 세 가지 기능 3-1) 상황을 보고 새로 들어온 것이 있으면 resister 3-2) 계속 모니터링 하다가 할 필요가 없을 때 deresister 3-3) 트래킹 해야 하는 object를 계속 모니터링 하면서 그에 대한 좌표값과 내용들을 업데이트 해줌 (중요)
1)
클래스를 사용하기 위해서 싸이파이(scipy) 라는 라이브러리 설치 필요 -> 과학이나 수학 계산에 필요한 라이브러리 / 유클리드 distance(좌표와 좌표 간의 거리)를 계산하기 위해 사용
object tracking을 위해 센트로이드 알고리즘을 사용
39)
InputCentroids는 새로 rect라고 해서 들어온 배열로 넘파이 제로를 이용해 다 0으로 마킹 -> rect에 들어온 것의 개수(갈이)만큼 배열을 세우고 그게 뭐가 될 지 모르기 때문에 비워두는 것
41~44)
디텍션 되는 것의 사각형 좌표를 가져와서 중심 좌표를 구함