首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OpenCV + Java = UnsatisfiedLinkError

OpenCV + Java = UnsatisfiedLinkError
EN

Stack Overflow用户
提问于 2013-09-05 08:34:48
回答 6查看 30.7K关注 0票数 24

我需要从我的USB摄像头捕获视频流,为此,我使用Opencv 2.4.6进行Java开发。我遵循here中列出的步骤

我将"C:\opencv\build\java\x64“目录添加到我的系统路径中,并在ECLIPSE上将"opencv-246.jar”文件包含到我的库中。当你运行explame时

代码语言:javascript
复制
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class Main {
    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat m  = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.println("m = " + m.dump());
    }
}

我得到了

代码语言:javascript
复制
m = [1, 0, 0;
  0, 1, 0;
  0, 0, 1]

OK =)

但是当我跑的时候

代码语言:javascript
复制
import org.opencv.highgui.VideoCapture;

public class Main {
    public static void main(String[] args) {
        VideoCapture vc = new VideoCapture(0);
        if(vc.isOpened()){
            System.out.println("Works!");
        }
    }
}

我得到了

代码语言:javascript
复制
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.highgui.VideoCapture.n_VideoCapture(I)J
    at org.opencv.highgui.VideoCapture.n_VideoCapture(Native Method)
    at org.opencv.highgui.VideoCapture.<init>(VideoCapture.java:113)
    at Main.main(Main.java:5)

我将包含的所有路由添加到:

C:\opencv\build\x64\vc10

一个接一个,但不起作用。

最后,我使用C:\opencv\build\x64\vc10创建了一个名为OPENCV_DIR的变量,但仍然获得了UnsatisfiedLinkError。

请帮帮我!

EN

回答 6

Stack Overflow用户

发布于 2013-09-05 15:20:15

在第二个示例中,您跳过了这一行

代码语言:javascript
复制
 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

所以opencv库没有加载,UnsatisfiedLinkError,等等。

编辑

感谢@Jishnu Prathap突出了java.library路径问题,如果您在设置时遇到问题,您仍然可以尝试使用java包装器的绝对路径so/dll/dylib,如下所示:

代码语言:javascript
复制
 System.load("/path to/our/java_wrapper");
票数 32
EN

Stack Overflow用户

发布于 2015-05-24 02:52:50

在java.I中使用OpenCV时,我遇到了类似的错误。我做了两件事来解决这个问题。

  1. static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
  2. I将路径添加到OpenCV dll或.so添加到javalibpath或path。由于某种原因,这实际上不起作用,我最终将OpenCV dll放在了system32 folder.

中。

票数 4
EN

Stack Overflow用户

发布于 2017-08-03 06:58:52

适用于使用opencv3.x的普通用户的

HighGUI模块在Java for opencv 3.0及更高版本中不再存在。

代码语言:javascript
复制
import org.opencv.videoio.VideoCapture;

而不是

代码语言:javascript
复制
import org.opencv.highgui.VideoCapture;

videoio包括VideoCapture、VideoWriter。

类似地:

imgcodecs包括imread/imwrite和friends

示例:

代码语言:javascript
复制
Highgui.imread(fileName)

-->

代码语言:javascript
复制
 Imgcodecs.imread(fileName)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18625948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档