我正在尝试使用OpenCV中的Viola-Jones面部检测器实现网络摄像头输入的面部检测程序,并且它工作正常,但在框架中没有检测到面部时它会变慢约10倍。
这真的很奇怪,因为如果框架中没有面部,大多数窗口将在级联的早期阶段被拒绝,我猜它应该稍微快一些(不要慢!)。
由于某些原因,我使用的是detectMultiScale函数(不是cvHaarDetectObjects函数),但我认为这无论如何都不重要。
有人可以就这个问题给我一个建议吗? 提前谢谢。
答案 0 :(得分: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);