How to remove this Exception "Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_objdetect in java.library.path"

How to remove this Exception "Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_objdetect in java.library.path"

我正在使用 OpenCV 2.4.9、JavaCV 0.7、JAVA 版本 8 和 Eclipse IDE 进行人脸识别项目...我不断收到这些异常..有没有以下代码有问题吗?这不是我的完整代码... 请有人尽快帮助我...

import com.googlecode.javacpp.Loader;
import com.googlecode.javacv.cpp.opencv_objdetect;
Loader.load(opencv_objdetect.class);

例外情况:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_objdetect in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:711)
    at com.googlecode.javacpp.Loader.load(Loader.java:586)
    at com.googlecode.javacpp.Loader.load(Loader.java:540)
    at com.googlecode.javacv.cpp.opencv_objdetect.<clinit>(opencv_objdetect.java:91)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:561)
    at FaceRecognizer.<init>(FaceRecognizer.java:56)
    at FaceRecognizer.main(FaceRecognizer.java:112)
Caused by: java.lang.UnsatisfiedLinkError: C:\Users\XYX\AppData\Local\Temp\javacpp183187286948746\jniopencv_objdetect.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.load0(Unknown Source)
    at java.lang.System.load(Unknown Source)
    at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:700)
    ... 8 more

看起来您在项目中使用的 java 库之一正在使用使用 dll 文件的 jni 调用。您是否正确安装了库?看起来它被称为 opencv 或与 jniopencv_objdetect.dll

相关的东西

This page 描述了如何获取 OpenCV Java 样本 运行。您需要做两件事:

  1. 您需要调用 System.LoadLibrary 指定它使用的 OpenCV DLL

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

  2. 确保 DLL 位于 JVM 可以找到的地方。如果这样做,有几种方法。我不使用 Eclipse,但 this 似乎给出了很好的解释。或者,一个简单的方法就是将 DLL 放入 windows\system32 目录

最后,如果您是 运行 64 位 JVM 但尝试使用 32 位 DLL,则可能会出现问题。如果您仍然遇到问题,请确保您使用的是匹配的 JVM 和 DLL。