我一直在努力让opencv在我们的覆盆子pi中工作,但我根本无法让它工作。我在OpenCV库中添加了一个新的eclipse项目,并粘贴了一些超级简单的代码。
function DOMIterate($node)
{
yield $node;
if ($node->hasChildNodes())
{
foreach ($node->childNodes as $subnode) {
// if($subnode != null) {
DOMIterate($subnode);
// }
}
}
}
但我收到错误:
java.lang.UnsatisfiedLinkError:org.opencv.core.Mat.n_Mat(III)J
无论如何都要解决这个错误?我没有想法。
答案 0 :(得分:0)
您可以像这样加载库:首先调用此方法
public static void loadOpenCV_Lib() throws Exception {
// get the model
String model = System.getProperty("sun.arch.data.model");
// the path the .dll lib location
String libraryPath = "C:/opencv/build/java/x86/";
// check for if system is 64 or 32
if(model.equals("64")) {
libraryPath = "C:/opencv/build/java/x64/";
}
// set the path
System.setProperty("java.library.path", libraryPath);
Field sysPath = ClassLoader.class.getDeclaredField("sys_paths");
sysPath.setAccessible(true);
sysPath.set(null, null);
// load the lib
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
注意:在上面的代码中,OpenCV已在C盘根文件夹中解压缩。
编辑:在Eclipse中,您也可以这样做:右键单击项目 - > 构建路径 - > 配置构建路径 - > 库(选项卡) - > 扩展OpenCV jar - > 原生库位置: - &gt ; Eidt - > 放这个; C:/opencv/build/java/x64/
- > 确定 - > 应用...
答案 1 :(得分:0)
我在Linux上遇到过这个问题,并花了一些时间来解决这个问题。首先,要回答上面的GuyWhoCodes,build文件夹中没有java文件夹。 This java intro opencv document讲述如何在Linux上进行构建,并说
将创建一个包含Java接口的jar(bin / opencv-244.jar)和一个包含Java绑定和所有OpenCV内容的本机动态库(分别为lib / libopencv_java244.so或bin / Release / opencv_java244.dll)< / p>
所以在你做cmake和make之后,jar就在bin文件夹中,本机库在lib文件夹中。
其次,我最初遵循this opencv Installation in Linux document进行Linux构建,并建议(在步骤5中)在执行java构建时取消设置BUILD_EXAMPLES,BUILD_TESTS,BUILD_PERF_TESTS。我找到的是取消设置这些似乎是我的原因&#34; java.lang.UnsatisfiedLinkError:org.opencv.core.Mat.n_Mat(III)J&#34;
一旦我基于first link进行了构建,并且只取消了BUILD_SHARED_LIBS选项,我就不再获得UnsatisfiedLinkError并且测试工作正常。我还没有充分发挥它的作用,弄清楚我未解决的问题是导致问题的原因,但对于任何倾向于此的人来说,这应该是一个简单的试错过程。
答案 2 :(得分:0)
您获得的错误意味着尚未链接/加载本机OpenCV文件。
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
您正在使用的上述代码行仅在指定的OpenCV本机文件驻留在Java库路径中时才有效。
你确定OpenCV文件在那里吗?我建议尝试通过提供完整路径来加载OpenCV本机,只是为了查看问题所在。
System.load("fullPathTo/opencv.dll");
我还建议您查看这篇文章,详细解释所有这些内容。 https://stackoverflow.com/a/47718273/5165833