2011-12-29 1 views
1

OpenCV를 사용하여 cv.camshift() 함수를 사용하여 화면의 객체를 추적하는 응용 프로그램 (Windows 7의 C++)을 작성하고 있습니다. 내 카메라 창 (카메라가 보는 내용을 보여주는 응용 프로그램 창)에 매우 빠른 동작과 관련하여 약간의 지연이 있음을 확인했습니다. 지연은 약 0.1 초인 것처럼 보입니다 - 아주 작지만 눈에 띄는 것입니다. 이러한 지연에 매우 민감한 응용 프로그램을 개발 중입니다. 필자는 코딩 오류를 배제하기 위해 카메라에서 화면에 표시되는 내용을 보여주는 OpenCV 샘플 비디오 앱 중 하나를 사용하려고 시도했으며이 지연 시간도 매우 짧습니다. 흥미롭게도 스카이프를 통해 내 카메라가 보는 것을 보았을 때 사실상 전혀 지연이없는 것 같습니다. 이 작은 지연을 없애기 위해 OpenCV가 더 빨리 작동하도록하기 위해 할 수있는 일이 있습니까?OpenCV 작은 화면에 지연이 표시됩니까?

답변

1

CamShift는 meanShift - 객체 중심의 평균 동작을 사용하여 동작을 감지합니다. 이것은 하나 이상의 프레임에 걸쳐 계산되어야합니다. 30Hz의 프레임 속도의 경우, 3 프레임의 깊이는 0.1 초가됩니다.

+0

의미가 있습니다. 설명 주셔서 감사합니다! 그래서 나는 다른 기술을 구현할 필요가있을 것입니다 - 하나는 의미를 가지지 않는 것입니다. 다시 한 번 감사드립니다! – pkout

+0

나를 놀라게하는 한 가지 사실은 OpenCV 수퍼 팩으로 패키지 된 camera.py 데모를 실행하고 카메라의 출력을보기 위해 카메라를 사용하면 실제로 객체를 빠르게 움직일 때 실제로 볼 수 있다는 것입니다 시야에는 작은 지연도 있습니다. 이 경우 캠 시프트가 수행되지 않습니다. 어쩌면 여러 프레임을 계산하는 것보다 지연이 더 많을 수도 있습니다. 이게 잘못되었다고 생각되면 알려주세요. – pkout

+0

더 많은 조사를 한 후이 토론에 추가하려면 지연이 카메라의 본질 인 것으로 밝혀졌습니다. 즉 통신의 컴퓨터 대기 시간입니다. 이를 제거하는 유일한 방법은 더 낮은 대기 시간을 갖는보다 전문적인 카메라를 얻는 것입니다. 우리는 대기 시간이 매우 짧은 PointGrey 카메라로 끝났습니다. 따라서 이것은 소프트웨어 문제가 아니라 하드웨어 문제입니다. – pkout