在linux上加载opencv问题 可现金答谢

java 测试代码时在windows 上是完全可以运行的 本地加载了.dll 部署在linux上需要加载.so
opencv已安装 求解决 可答谢

Home - OpenCV 这里下载OpenCV源码,然后编译 .so 文件就可以用了,或者GitHub上找一个已经编译好的也行。
编译方法:centos7编译openCV4.5.2生成so文件_zhy的博客-CSDN博客
使用第三方库:

这个还就是吾有办法(如果是编译问题,吾另有博文指点)。刚刚发布了一个博文:


范例代码如下,保证成功!
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());  
}

}