我正在尝试从http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html
稍微改变一下这个例子 CascadeClassifier faceDetector = new CascadeClassifier("/haarcascade_frontalface_default.xml");
Mat image = Highgui.imread(originalFile.getAbsolutePath());
MatOfRect faceDetections = new MatOfRect();
double w = ((double)originalCrop.getWidth());
double h = ((double)originalCrop.getHeight());
faceDetector.detectMultiScale(image, faceDetections, 3, 1,
Objdetect.CASCADE_DO_CANNY_PRUNING , new Size(w/16, h/16), new Size(w/2, h/2));
来自API:scaleFactor - 指定在每个图像比例下图像尺寸减少多少的参数。
更改scaleFactor会更改检测到的内容。例如,对于以下图像: http://graphics8.nytimes.com/images/2013/04/02/world/MOSCOW/MOSCOW-articleLarge-v2.jpg
scaleFactor of 3 - >没有检测到戈尔巴乔夫的脸
scaleFactor of 2 - >戈尔巴乔夫的脸部被检测到两次(一个较大的矩形包含较小的一个)
scaleFactor为1.01 --->戈尔巴乔夫的脸被检测到一次
这究竟是如何运作的?
答案 0 :(得分:3)
在opencv forum处回答:
基本上,比例因子用于创建比例金字塔。更多 可以找到here的解释。简而言之。你的模型有一个固定的 训练期间定义的大小。这意味着这个脸的大小是 在图像中检测到是否发生。但是,通过重新调整输入 图像,您可以调整较大的脸朝向较小的脸,然后制作它 可检测到算法。使用一小步调整大小 例子1.05意味着你减小了5%的尺寸,你增加了 找到与检测模型匹配大小的机会。