【问题标题】:Error ExceptionInInitializerError when creating instances of opencv classes - Mat, RectVector and CascadeClassifier创建 opencv 类的实例时出现错误 ExceptionInInitializerError - Mat、RectVector 和 CascadeClassifier
【发布时间】: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

【问题讨论】:

    标签: java opencv javacv


    【解决方案1】:

    您可能需要包含openblas-platform.jaropenblas.jar 以及来自javacv-platform 的适用于您平台的相应原生 jar。

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 2023-01-12
      • 2020-11-27
      • 2013-08-27
      • 2021-12-28
      • 2017-12-12
      • 1970-01-01
      • 2015-02-20
      相关资源
      最近更新 更多