天天看點

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

找到路徑 /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
Mac報錯org.opencv.imgcodecs.Imgcodecs.imread_0及no opencv_java343 in java.library.path

VM Option 裡加入上面那句話即可:

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

這裡的版本号是3.4.3,注意這裡就好。

【第一個錯誤的話,請安裝完後繼續完成第二步操作】

OK,點選正常運作。