2014-07-20 5 views
0

OpenCV의 Viola-Jones 얼굴 검출기를 사용하여 웹캠 입력과 함께 얼굴 검출 프로그램을 구현하려고 시도 중입니다. 단, 더 이상 작동하지 않으면 약 10 배 느려집니다. 얼굴이 프레임에서 감지됩니다.프레임에 얼굴이없는 경우 OpenCV의 얼굴 검출기가 느려짐

프레임에 얼굴이 없으면 캐스케이드의 초기 단계에서 대부분의 윈도우가 거부되므로 약간 빨라야합니다 (느려지지 않아야합니다!).

몇 가지 이유로 detectMultiScale 함수 (cvHaarDetectObjects 함수 아님)를 사용하고 있지만 어떤 방식 으로든 중요하다고 생각하지 않습니다.

누구든지 내게이 문제에 대한 조언을 제공 할 수 있습니까? 미리 감사드립니다.

답변

2

감지 할 얼굴 사각형의 최소 및 최대 크기를 추가하려고 했습니까? 피라미드 스케일 값을 확인할 수도 있습니다. 1보다 커야합니다. 너무 느리면 더 높은 값을 사용하십시오. 감지가 좋지는 않지만 더 빠를 것입니다.

cv::CascadeClassifier cascade; 
    // ... init classifier 
    cv::Mat grayImage; 
    // ... set image 
    std::vector<cv::Rect> > results; 
    cv::Size minSize(60,60); 
    cv::Size maxSize(80,80); 
    int minNeighbors= 3; // edited 
    float pyramidScale = 1.1f; 

    cascade.detectMultiScale(grayImage, results, pyramidScale, minNeighbors, 
      0 , minSize, maxSize); 
+0

프레임에 얼굴이 있으면 빠릅니다 (30fps). 이것이 이상한 이유입니다 ... scaleFactor = 1.1, minNeighbors = 3, minSize = (50, 50), maxSize = 프레임 크기 이들은 지금 사용하고있는 매개 변수입니다. 그리고 네 번째 매개 변수는 감지 할 얼굴 수가 아닙니다. 그것들을 하나의 최종 결과로 병합하는 것이 이웃 후보 영역의 최소 수입니다. – IKS

+0

내 잘못이지만, 나를 위해 "maxSize = 프레임 크기"문제의 열쇠입니다. 거대한 최대 크기를 설정하여 비슷한 문제가 발생했습니다. – Ulpaso

+0

maxSize를 설정하지 않았더라도 "cvHaarDetectObjects 함수"를 사용하여 동일한 작업을 수행하면 괜찮 았습니다. 그러나 나는 값을 확실히 바꾸기 위해 노력해야한다. 답장을 보내 주셔서 감사합니다. – IKS