我正在学习Mac中的OpenCV java。我正在网上试用这个教程,但在线程“main”java.lang.NullPointerException中获得异常
这是我的代码
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
public class testApp {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
CascadeClassifier faceDetector = new CascadeClassifier(testApp.class
.getResource("/Users/myName/Downloads/opencv/data/haarcascades/haarcascade_frontalface_alt2.xml")
.getPath());
Mat image = Imgcodecs.imread(testApp.class
.getResource("lena.png")
.getPath());
MatOfRect faceD = new MatOfRect();
faceDetector.detectMultiScale(image,faceD);
for (Rect rect:faceD.toArray()){
Imgproc.rectangle(image,new Point(rect.x,rect.y),new Point(rect.x+rect.width,rect.y+rect.height),
new Scalar(0,255,0));
}
String outputFile = "OUTPUT.png";
//System.out.println(String.format("writing %s", outputFile));
Imgcodecs.imwrite(outputFile,image);
}
}
错误
Exception in thread "main" java.lang.NullPointerException
at testApp.main(testApp.java:13)
如何解决这个问题,提前谢谢
答案 0 :(得分:2)
似乎.getResource("/Users/myName/Downloads/opencv/data/haarcascades/haarcascade_frontalface_alt2.xml")
返回null
,因为它无法找到资源。因此,我建议您检查上面的路径是否正确。
答案 1 :(得分:0)
你导入了MatOfReact吗?:
import org.opencv.core.MatOfRect;
答案 2 :(得分:0)
我认为它不会加载xml文件,因此CascadeClassifier的默认opencv构造函数就是这样
CascadeClassifier::Cascade`Classifier(const string& filename)
示例:
CascadeClassifier face_cascade;
face_cascade.load( "C:/OpenCV243/data/Haarcascades/haarcascade_frontalface_alt2.xml" );