共计 1699 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要讲解了“Java 怎么在 LINUX 上加载 OpenCV so 库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Java 怎么在 LINUX 上加载 OpenCV so 库”吧!
这个范例不一定能跑起来。原因就是依赖库加载的问题。如果 libopencv_java.so:
包含其他所有的 so 功能,上述博文就是对的。
如果不包含,需要一定的加载技巧。
代码范例如下:
package taishan;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
@SuppressWarnings(serial)
public class OpenCVTest
public final static String LIB_PATH = /home/wuxi/eclipse-workspace/OpenCVTest/libs/bin
private static List File getOpenCVFiles(final String dirName)
{ if (dirName == null)
{
return null;
}
File dir = new File(dirName);
if (!dir.exists() || !dir.isDirectory())
{
return null;
}
File[] files = dir.listFiles();
List File fileList = new LinkedList File
for (File file : files)
{ String name = file.getName();
if ( name.startsWith( lib) name.endsWith(.so))
{ fileList.add(file);
}
}
return fileList;
}
private static void loadNativeOpenCV(final String dirName)
{ List File fileList = getOpenCVFiles(dirName);
if (fileList == null || fileList.size() == 0)
{
return;
}
while (fileList.size() 0)
{ for (int i=0; i fileList.size(); i++)
{ File file = fileList.get(i);
try
{ System.load(file.getAbsolutePath());
}
catch (java.lang.Throwable e)
{
continue;
}
fileList.remove(i);
i--;
}
}
// 如果 libopencv_java.so 在另外目录,需要单独加载
//System.load(Dir+ / + lib +Core.Core.NATIVE_LIBRARY_NAME+ . +LIB_SUFFIX_LINUX);
}
public static void main(String[] args)
{ loadNativeOpenCV(LIB_PATH);
Mat m = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println(m = + m.dump());
}
}
关键的一句就是要正确找到 so 包。
感谢各位的阅读,以上就是“Java 怎么在 LINUX 上加载 OpenCV so 库”的内容了,经过本文的学习后,相信大家对 Java 怎么在 LINUX 上加载 OpenCV so 库这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!
正文完