2016-05-31 105 views
0

通用:OpenCV Java |獲取OpenCV在其他計算機上工作

我使用OpenCV編程人臉檢測程序,我希望在沒有安裝OpenCV的情況下在其他計算機上工作。我的程序適用於Mac OS X,Linux和Windows。

什麼我已經嘗試過:

我試圖編譯它在我的第一臺Mac,然後我複製到我的第二個MAC,但我總是錯誤的,因爲有絕對路徑(我認爲)指着我桌面(我在第一臺Mac上編譯庫的位置)。 我問我的老師是否有可能將這些絕對路徑改寫成相對路徑,但他說這是不可能的。現在,我在這裏:)

CODE:(尼斯格式化的xD)

public static void loadOpenCVLibrary() { 
    //all opencv libs must be copyed to OpenCV_lib in the project workspace 

    File folder = new File(directory+seperator+"System"+seperator+"OpenCV_Linux"+seperator+"build"+seperator+"lib"+seperator); 
    //File folder = new File("/Users/Tech/Documents/Development/workspace/opencv-3.0.0/bin/"); 
    File[] listOfFiles = folder.listFiles(); 

for (int i = 0; i < listOfFiles.length; i++) { 
    if (listOfFiles[i].isFile() && listOfFiles[i].getName().endsWith(".dylib")) { 
     File lib = new File(directory+seperator+"System"+seperator+"OpenCV_Linux"+seperator+"build"+seperator+"lib"+seperator + listOfFiles[i].getName()); 
     //File lib = new File("/Users/Tech/Documents/Development/workspace/opencv-3.0.0/bin/" + listOfFiles[i].getName()); 
     System.load(lib.getAbsoluteFile().toString()); 
    } 
}} 

如果你需要更多的相關信息,發送郵件:)

非常感謝你! 技術

回答

0

如果使用的是Eclipse,你可以試試這個:

  1. 複製您的OpenCV文件夾到當前項目(不只是罐子, 整個文件夾)。
  2. 打開你的Buildpath並添加OpenCV的罐子(在工作空間不是絕對的)
  3. 現在打開罐子的菜單,然後選擇本地庫,然後點擊編輯
  4. 再次選擇工作區和該時間點的文件夾linux/windows(你需要的)本地庫是

當你構建你的* .jar時,它現在已經有庫並且應該運行。

請注意,這不是在所有平臺上運行,而是僅針對您選擇的平臺運行。

您還可以查看到裝載的OpenCV在類路徑的選擇,如果跨plattform運行是一個潛在的問題:Load Native Library from Class path

+0

現在,它正在尋找這樣的... http://prntscr.com/bduxfg。當我使用System.loadLibrary(Core.NATIVE_LIBRARY_NAME);它只在eclipse中工作,當我在我的問題中使用我的方法「loadOpenCVLibrary()時,它不工作,因爲我必須設置正確的路徑。我需要改變什麼。我認爲絕對路徑在庫本身。但是,謝謝你的幫助:) – Tech

+0

@Tech除了eclipse,還有什麼地方可以工作嗎?因爲如果它是這樣的話,你應該能夠將項目檢查到你的源代碼管理中,並且只要在任何地方下載並繼續使用它。或者你的意思是罐子? – Gildraths

+0

它已經可以在我的Mac上導出和使用了,但是我想把這個程序賣給我的客戶,我想把它做成一個罐子 – Tech

相關問題