gpt4 book ai didi

java.lang.UnsatisfiedLinkError/tmp/javacpp94368173067/libopencv_core.so.2.4 : cannot open shared object file: No such file or directory

转载 作者:行者123 更新时间:2023-12-01 14:17:30 27 4
gpt4 key购买 nike

我使用 javacv 在 java 中编写了运动检测代码,它在 Windows 上完美运行,但在 Ubuntu 13.04 中它显示这样的错误,请为此提出解决方案,我也附加了代码

代码

/*
* 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();
}
}

输出:

sx=158sy=37w=350h=350op7 Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/javacpp94368173067/libjniopencv_core.so: libopencv_core.so.2.4: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843) at 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) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:270) at com.googlecode.javacpp.Loader.load(Loader.java:453) at com.googlecode.javacv.cpp.opencv_imgproc.(opencv_imgproc.java:97) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:270) at com.googlecode.javacpp.Loader.load(Loader.java:453) at com.googlecode.javacv.cpp.opencv_highgui.(opencv_highgui.java:85) at com.googlecode.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:174) at demo1.Demo1.main(Demo1.java:187) Caused by: java.lang.UnsatisfiedLinkError: no opencv_core in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878) at java.lang.Runtime.loadLibrary0(Runtime.java:849) at 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 more Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)

最佳答案

它的简单意思是它无法找到 native 依赖项。 JavaCV 在内部使用 JNI 调用来使用 OpenCV dll。在 Windows 上,依赖项位于路径上(背后可能有多种原因,opencv 可能位于环境变量或某些资源中)。

我建议在 Linux 上进行此操作:https://code.google.com/p/javacv/

关于java.lang.UnsatisfiedLinkError/tmp/javacpp94368173067/libopencv_core.so.2.4 : cannot open shared object file: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com