java - 定义 "\\haarcascade_frontalface_alt.xml"路径时人脸检测出现空指针异常

标签 java opencv

public class FaceDetector {

    public static void main(String[] args) {

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        System.out.println("\nRunning FaceDetector");

        CascadeClassifier faceDetector = new CascadeClassifier(FaceDetector.class.getResource("\\haarcascade_frontalface_alt.xml").getPath());
        Mat image = Highgui.imread(FaceDetector.class.getResource("abc.jpg").getPath());

        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(image, faceDetections);

        System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

        for (Rect rect : faceDetections.toArray()) {
            Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
                    new Scalar(0, 255, 0));
        }

        String filename = "ouput.png";
        System.out.println(String.format("Writing %s", filename));
        Highgui.imwrite(filename, image);
    }
}

这是我的错误图像:

error

出现空点异常错误。如何解决我也尝试给出完整路径但同样的问题。请帮助我。

最佳答案

您需要将绝对路径传递给CascadeClassifier。例如:

CascadeClassifier faceDetector = new CascadeClassifier("D:\\haarcascade_frontalface_alt.xml");

对图像进行相同的读取和写入操作。这是有线的,但事实上在这种情况下它无法读取文件。我的情况也是这样,已经解决了。

关于java - 定义 "\\haarcascade_frontalface_alt.xml"路径时人脸检测出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32421851/

相关文章:

Java - 递归双阶乘算法

java - 速度模板的变化以在不重启服务器的情况下反射(reflect)出来

java - 使用正则表达式检查字符串至少包含一个 Unicode 字母

java - 使用 Java string.format() 进行打印

c++ - OpenCV:在非常嘈杂的视频中检测 LED 颜色

python - 如何获得具有图像的 R、G 和 B 分量的大小为 n*3(其中 n 是图像的像素总数)的矩阵

java - Spring Boot 和多个外部配置文件

python - 如何使用 opencv python 将红色 channel 与灰度图像合并?

image - 检测模糊图像中的细线

android - 原生 opencv for android