2013-10-20 10 views
5

안녕하세요 저는 OpenCV를 처음 사용하고 고정 된 위치에 배치 된 카메라를 사용하여 인체 추적을 구현하려고합니다. 나는 약간의 연구를했고 히스토그램 오브 오리엔트 그라디언트 (Histogram of Oriented Gradients) 방법을 보았지만 그것이 무엇을하는지에 따라 트래킹 대신에 탐지가되었다. 따라서 OpenCV에서 사람의 탐지 및 추적을 구현하는 가장 간단한 방법은 무엇입니까?OpenCV 인체 추적

P/S :이 부분은 video이며 정확하게 달성하고 싶습니다.

+0

당신은 충분히 좋았다 답변을 받아 들일 수 :

다음 SO 게시물을 살펴 있습니다. (대답의 왼쪽에있는 체크 표시를 클릭하십시오) – samkhan13

답변

4

인체 감지를 위해 HAAR 캐스케이드를 사용해 볼 수도 있습니다. CascadeClassifier::CascadeClassifier()을 사용하여 캐스케이드를로드 한 다음 CascadeClassifier::detectMultiScale()을 사용하여 해당 이미지에서 오브젝트 (본문)가 감지 된 영역을 가져옵니다. 속도를 높이고 탐지의 정확성을 높이려면 detectMultiScale()에 주어진 매개 변수를 조정하십시오.

계통 검색을 포함하여 계단식 잔뜩 here을 찾을 수 있습니다.

+0

자세한 제안을 해주셔서 감사합니다. 그러나 그다지 문제가되지 않으면 하나의 후속 질문이 있습니다. 실시간 비디오 피드에서 (위 비디오에서 보여지는 것처럼) 내가 추적하고있는 모든 사람에 대해 고유 한 식별자를 넣고 싶을 때 제안한 방법이 빠른 재 감지로 "시뮬레이션"하는 것이 좋습니다. 당신의 방법을 사용하는 것이 가능한가? 다시 한번 감사드립니다. – user2900552

+0

@ user2900552 HAAR 또는 LBP 캐스케이드를 사용하면 원하는 객체와 비슷한 각 카메라 프레임 내의 영역 만 탐지 할 수 있습니다. 그래서 네, 각 프레임에서 "다시 감지"하여 추적 할 수 있습니다. 원하는 객체의 인스턴스에 고유 한 ID를 할당하려면 주 구성 요소 분석 또는 선형 식별 분석 또는 "기능 감지 및 기능 일치"를 사용해야합니다. "실용적인 컴퓨터 비전 프로젝트로 마스터 링 opencv"라는 책을 찾아보십시오. 그것은 당신이 필요로하는 것에 대한 C++ 레서피를 가지고 있습니다. – samkhan13

+0

친절한 답장을 보내 주셔서 감사합니다. 나는 당신의 제안을 분명히 시도 할 것이지만, 지금은 OpenCV를 우선 준비해야한다. 다시 한번 감사드립니다. – user2900552

1

"사람"모델과 함께 HOG 검출기 또는 잠재 svm 검출기를 사용하여 사람의 경계 상자를 얻은 다음 사람을 추적 할 수 있습니다.

사람의 중심을 추적하려면 다음을 수행하십시오. 새로운 중심 위치를 측정하십시오. 그것의 속도를 측정해라. 현재 프레임 위치 및 속도를 사용하여 다음 프레임 중심의 위치를 ​​예측합니다. 그런 다음 중심점의 새 측정 값이 예측값과 비슷한 지 확인합니다. 그것이 이전 프레임과 동일한 사람이라면 프레임이 아닌 새로운 사람이됩니다.

아마도 중심 대신 경계 상자를 추적해야합니다. 프레임 속도가 충분히 높습니다. 아마도 경계 상자를 플롯하고 추적하는 것을 잊을 수 있습니다.