我正在使用OpenCV开发一个系统,它使用haarCascades xml文件检测对象。但是,有许多错误的检测。有一种方法可以最大限度地减少错误检测?这是我的代码的一部分:
private void detecta(String arquivo)
{
CascadeClassifier bodyDetector = new CascadeClassifier(path+arquivo);
MatOfRect faceDetections = new MatOfRect();
bodyDetector.detectMultiScale(webcam_image, faceDetections);
// bodyDetector.detectMultiScale(webcam_image, faceDetections);
for (Rect rect : faceDetections.toArray()) {
Core.rectangle(webcam_image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));// mat2Buf, mat2Buf);
}
if (faceDetections.toArray().length == 0) {
toc.getLblSaida().setText("");
} else {
//java.awt.Toolkit.getDefaultToolkit().beep();
toc.getLblSaida().setText(+faceDetections.toArray().length + "objetos detectados");
try {
playSound();
} catch (IOException ex) {
Logger.getLogger(TestWebCam.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
答案 0 :(得分:0)
detectMultiScale的一些重载可以让你这样做。
即增加minNeighbours的值[有效检测所需],设置minSize和maxSize可能会达到你想要的效果。