首页 文章

java.lang.UnsatisfiedLinkError / tmp / javacpp94368173067 / libopencv_core.so.2.4:无法打开共享对象文件:没有这样的文件或目录

提问于
浏览
0

I coded for motion detection code in java using javacv ,it is perfectly running on windows but in Ubuntu 13.04 it shows error like this please suggest solutions for this, i'm attaching code also

Code

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo;

/**
 *
 * @author Admin
 */
import com.googlecode.javacpp.Loader;
import com.googlecode.javacv.*;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_calib3d.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;

public class Demo {
    public static void main(String[] args) throws Exception {
        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
        grabber.start();

        IplImage frame = grabber.grab();
        IplImage image = null;
        IplImage prevImage = null;
        IplImage diff = null;

        CanvasFrame canvasFrame = new CanvasFrame("Original stream");
        canvasFrame.setCanvasSize(frame.width(), frame.height());

        CanvasFrame editFrame = new CanvasFrame("Edited stream");
        canvasFrame.setCanvasSize(frame.width(), frame.height());

        CvMemStorage storage = CvMemStorage.create();

        while (canvasFrame.isVisible() && (frame = grabber.grab()) != null) {
            //cvSmooth(frame, frame, CV_GAUSSIAN, 9, 9, 2, 2);
            if (image == null) {
                image = IplImage.create(frame.width(), frame.height(), IPL_DEPTH_8U, 1);
                //cvCvtColor(frame, image, CV_RGB2GRAY);
            } else {
                prevImage = IplImage.create(frame.width(), frame.height(), IPL_DEPTH_8U, 1);
                prevImage = image;
                image = IplImage.create(frame.width(), frame.height(), IPL_DEPTH_8U, 1);
                cvCvtColor(frame, image, CV_RGB2GRAY);
            }

            if (diff == null) {
                diff = IplImage.create(frame.width(), frame.height(), IPL_DEPTH_8U, 1);
            }

            if (prevImage != null) {
                // perform ABS difference
                cvAbsDiff(image, prevImage, diff);
                // do some threshold for wipe away useless details
                cvThreshold(diff, diff, 64, 255, CV_THRESH_BINARY);

                canvasFrame.showImage(frame);
                editFrame.showImage(diff);

            }
        }
        grabber.stop();
        canvasFrame.dispose();
    }
}

Output:

sx = 158sy = 37w = 350h = 350op7线程“main”中的异常java.lang.UnsatisfiedLinkError:/tmp/javacpp94368173067/libjniopencv_core.so:libopencv_core.so.2.4:无法打开共享对象文件:java上没有这样的文件或目录.lang.ClassLoader $ NativeLibrary.load(Native Method),位于java.lang.ClassLoader.loadLibrary上的java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957)(ClassLoader.java:1882),java.lang.ClassLoader.loadLibrary (ClassLoader.java:1843)java.lang.Runtime.load0(Runtime.java:795)at java.lang.System.load(System.java:1061)at com.googlecode.javacpp.Loader.loadLibrary(Loader . java:566)at com.googlecode.javacpp.Loader.load(Loader.java:489)at com.googlecode.javacpp.Loader.load(Loader.java:431)at com.googlecode.javacv.cpp.opencv_core . ( opencv_core.java:136)java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:270)at com.googlecode.javacpp.Loader.load(Loader.java:453)在java.lang上的com.googlecode.javacv.cpp.opencv_imgproc . (opencv_imgproc.java:97) java.lang.Class.forName(Class.java:270)中的.Class.forName0(Native Method),位于com.googlecode.javacv.ppncv_highgui的com.googlecode.javacpp.Loader.load(Loader.java:453) . (opencv_highgui.java:85)at com.googlecode.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:174)at demo1.Demo1.main(Demo1.java:187)引起:java.lang.UnsatisfiedLinkError:没有opencv_core in Java.library.path,java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878),位于java.lang.Runtime.loadLibrary0(Runtime.java:849),位于java.lang.System.loadLibrary(System.java:1087) at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:593)at com.googlecode.javacpp.Loader.load(Loader.java:481)... 12更多Java结果:1 BUILD SUCCESSFUL(总时间:0秒)

2 回答

  • 1

    它的简单含义是它无法找到本机依赖项 . JavaCV在内部使用JNI调用来使用OpenCV dll . 在Windows上,依赖关系在路径上(可能有多种原因,opencv可能在环境变量或某些资源中) .

    我建议通过这个linux:https://code.google.com/p/javacv/

  • 0

    在终端中尝试“echo $ PATH”命令,确保计算机上的opencv * .dll文件的路径是否存在 .

相关问题