2015-03-02 47 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

相關問題