2015-03-02 97 views
2

我想用scala开发一个使用java opencv 3.0.0-beta的应用程序。opencv 3.0.0 java imread_0 undefined

我正在运行时错误: java.lang.UnsatisfiedLinkError中:java.lang.UnsatisfiedLinkError中:org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava /郎/字符串;).J

虽然研究的原因我创建了以下简单的应用程序展品类似行为:

import reflect._ 

import org.opencv.core.Core 
import org.opencv.core.Mat 
import org.opencv.core.CvType 
import org.opencv.imgcodecs.Imgcodecs 

object main extends Application { 
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 

    val what = "something.png" 
     val mat = Imgcodecs.imread(what) 
     Imgcodecs.imwrite("something_else.png", mat) 
} 

的主要区别在于,如果运行作为“SBT运行”性能达到要求。如果从上面删除适当的行,代码在REPL中失败。

我怀疑,这个问题涉及到原来的问题,但没有证据。

如果我在两种情况下查看JVM的内存映射,我已加载预期的库。

如果代码被检查我觉得没有org.opencv.imgcodecs.Imgcodecs.imread_1

我完全迷失在何处下次去诊断这个问题的定义。

是否有任何人谁碰到过这个问题?

感谢

+0

你试过了吗:String what =“something.png”; Mat mat = Imgcodecs.imread(what);而不是使用“val”类型? – 2015-03-02 13:28:36

+0

谢谢哈当。不,我没有。用java编写它只是没有发生在我身上。真正的应用程序的大部分是scala。 – armadefuego 2015-03-02 17:19:20

回答

0

我没有用openCV3.0然而,因为它有重大的改变,打破OpenCV的2.4.x的代码,你提供的库路径

sbt run 

添加

javaOptions in run += "-Djava.library.path=lib/opencv/" 

您build.sbt文件或通过对CMD线

sbt run -Djava.library.path=lib/opencv/ 

OpenCV的文件夹中应该有得到您的jar文件生成沿着您的文件

我为2.4.9,2.4.10和3.0.0在这种混帐回购协议的Java 7和8的Java bindins如果你需要他们

[email protected]:opencv/java_lib.git 
+0

谢谢DAR。这似乎不是我的问题,因为当我查看流程图(cat/proc/{pid}/maps)时,库存在, – armadefuego 2015-03-02 16:43:24