2016-05-31 66 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

相关问题