Java怎么在LINUX上加载OpenCV so库

47次阅读
没有评论

共计 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 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计1699字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)