Mac报错org.opencv.imgcodecs.Imgcodecs.imread_0及no opencv_java343 in java.library.path

本来想放弃使用 BufferedImage 改用 OpenCV 处理图像,但我试了 Maven 直接加入依赖后发现频频报错,网上搜的资料教程又太少,折腾了好久,还是记录下来方便大家吧!

此教程针对 Mac OS 环境

OpenCV for Java 运行时抛出异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_0

是由于没有加载动态链接库导致的 libopencv_javaxxx.dylib,xxx指的是版本号

 public static void main(String []args){
        //加上这句
        // 加载 动态链接库
        System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

        // OpenCV Code ...
        Mat src = Imgcodecs.imread("xx.jpg", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
}

 

点击运行,还会报另外一个错误:

java.lang.UnsatisfiedLinkError: no opencv_javaxxx in java.library.path

原因有两个:

1. 缺少动态链接库,你可能是使用 Maven 或是 Jar 包的方式直接引入 OpenCV 的,这并不会包含链接库,因为 Windows 和 Mac 分别使用的是 dll 、 dylib 两种不同的方式,需要自行处理。

*************所以请依次执行下面命令安装,若之前安装过,先执行第一句卸载******************

$ brew uninstall opencv3

$ brew install ant

$ xcode-select --install

$ brew edit opencv       (这一句将文件中的 -DBUILD_opencv_java=OFF 改为 -DBUILD_opencv_java=ON)

$ brew install --build-from-source opencv

OK , OpenCV for Java 安装完成!

紧接着,导入 Jar 包 到 Library

File -> Project Structure -> Libraries  -> 点击添加?

Mac报错org.opencv.imgcodecs.Imgcodecs.imread_0及no opencv_java343 in java.library.path_第1张图片

找到路径 /usr/local/Cellar/opencv/3.4.3/share/OpenCV/java/opencv-343.jar 文件

直接拖到弹出的导航栏内,点击右下角 Open 就可以了

最后Apply, 确定。Jar 包导入成功。

 

2. 包含动态链接库,但在 IDE 配置中未设置,这里是 IntelliJ IDE 设置:

Mac报错org.opencv.imgcodecs.Imgcodecs.imread_0及no opencv_java343 in java.library.path_第2张图片

Mac报错org.opencv.imgcodecs.Imgcodecs.imread_0及no opencv_java343 in java.library.path_第3张图片

VM Option 里加入上面那句话即可:

-Djava.library.path=/usr/local/Cellar/opencv/3.4.3/share/OpenCV/java/

这里的版本号是3.4.3,注意这里就好。

【第一个错误的话,请安装完后继续完成第二步操作】

OK,点击正常运行。

你可能感兴趣的:(Java)