我正在尝试使用scala开发一个使用java opencv 3.0.0-beta的应用程序。
我收到运行时错误: java.lang.UnsatisfiedLinkError:java.lang.UnsatisfiedLinkError:org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava / lang / String;)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 run"它按预期执行。如果从上面删除了相应的行,则代码在REPL中失败。
我怀疑这个问题与原始问题有关,但没有证据。
如果我在两种情况下查看JVM的内存映射,我都会加载预期的lib。
如果检查代码,我找不到org.opencv.imgcodecs.Imgcodecs.imread_1
的定义我很遗憾在诊断这个问题时要去哪里。
有没有人遇到过这个问题?
由于
答案 0 :(得分: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文件一起生成的文件
如果你需要的话,我在这个git仓库中为java 7和8提供了java绑定2.4.9,2.4.10和3.0.0
git@gitlab.com:opencv/java_lib.git