나는 objectdetect 샘플을보고 있었고 보행자 다리 카메라로 찍은 일부 영상에서 몇 개의 신체 감지 폭포 (* haarcascade_fullbody/haarcascade_upperbody/haarcascade_lowerbody, haarcascade_mcs_upperbody *)를 사용하여 샘플을 시도했습니다. 지금까지는 그렇게 좋았지 만, 까다로운 기능이었습니다.OpenCV 2.4 CascadeClassified detectMultiScale 인수
나는 내 카메라가 항상 같은 위치에 있기 때문에 최소/최대 크기를 전달하면 더 부드럽게 움직일 수 있다고 생각하지만 최소/최대 경계 상자를 찾습니다. 그렇게 할 때 불행하게도 나는 구문 오류로 실행 :
//my call
body.detectMultiScale(gray, bodies, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30, 30),cv::Size(0,0),cv::Size(5,13),cv::Size(45,80));
//errors:
main.cpp:43: error: no matching function for call to 'cv::CascadeClassifier::detectMultiScale(cv::Mat&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size, cv::Size, cv::Size, cv::Size)'
/opt/local/include/opencv2/objdetect/objdetect.hpp:383: note: candidates are: virtual void cv::CascadeClassifier::detectMultiScale(const cv::Mat&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size, cv::Size)
/opt/local/include/opencv2/objdetect/objdetect.hpp:393: note: virtual void cv::CascadeClassifier::detectMultiScale(const cv::Mat&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, std::vector<int, std::allocator<int> >&, std::vector<double, std::allocator<double> >&, double, int, int, cv::Size, cv::Size, bool)
는 단순히 최소 최대로 두 cv::Size
객체를 추가했지만 솔직히 잘 모르겠어요 :
- 왜 이전의 인수를 도큐멘트 이 int로 나열되면 Size() 객체도 마찬가지입니까?
- 내가 잘못된 문서를 보거나 문서에서 을 잘못보고 있습니까?
C++ : 보이드 CascadeClassifier :: detectMultiScale (CONST 매트 & 화상 벡터 & 목적, 이중 scaleFactor와 = 1.1, 크기) (INT, 3 = 플래그 = 0, 크기 MINSIZE = 크기 minNeighbors에서 INT maxSize = Size())
docs.
왜 'minNeighbors' 및'flags'에'cv :: Size'를 전달합니까? – Mohammad
그 질문 중 하나입니다. 간단히 [objectdetect.cpp] (https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/tutorial_code/objectDetection/objectDetection.cpp?rev=6483) 샘플의 호출을 복사했습니다. –
주된 이유는 setter 메소드를 찾지 못했던'minSize','maxSize' 인수를 얻는 것이므로 생성자가 유일한 액세스 포인트 인 것처럼 보입니다. –