【发布时间】:2019-09-14 13:22:20
【问题描述】:
我正在尝试制作用于学习的人脸识别 Java 应用程序。基于 YT 的教程:https://www.youtube.com/watch?v=3x7ofnQJMo4&t=2180s 在创建 opencv 相关类的实例时,我在教程的第三部分(上面链接)结束时遇到错误,例如:
Mat cameraImage = new Mat();
CascadeClassifier cascade = new CascadeClassifier(HAAR_XML);
BytePointer mem = new BytePointer();
RectVector detectedFaces = new RectVector();
在上述每一行我都遇到了一个错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.company.loginpanel.main(loginpanel.java:79)
Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
我可以通过跳过创建实例来跳过错误,如下所示:
Mat cameraImage;
CascadeClassifier cascade;
BytePointer mem;
RectVector detectedFaces;
显然,由于变量下没有对象,它会在更多行中崩溃。
无论我尝试在代码中的哪个位置创建实例,它都会崩溃。
请在我的 GitHub 上找到完整代码:https://github.com/shanstoni/FaceRecognition
我已经试过了:
- 为旧版本更改 Java 库
- 将 sdk 从 12 更改为 1.8
- 从代码加载opencv:System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
代码:
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
VideoCapture webSource = null;
Mat cameraImage = new Mat();
CascadeClassifier cascade = new CascadeClassifier(HAAR_XML);
BytePointer mem = new BytePointer();
RectVector detectedFaces = new RectVector();
}
这是完整的错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.company.loginpanel.main(loginpanel.java:58)
Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
at java.lang.Class.createAnnotationData(Class.java:3521)
at java.lang.Class.annotationData(Class.java:3510)
at java.lang.Class.getAnnotation(Class.java:3415)
at org.bytedeco.javacpp.Loader.checkPlatform(Loader.java:970)
at org.bytedeco.javacpp.Loader.load(Loader.java:1074)
at org.bytedeco.javacpp.Loader.load(Loader.java:1036)
at org.bytedeco.opencv.opencv_core.AbstractArray.<clinit>(AbstractArray.java:18)
... 1 more
Process finished with exit code 1
【问题讨论】: