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  -> 點擊添加?

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

直接拖到彈出的導航欄內,點擊右下角 Open 就可以了

最後Apply, 確定。Jar 包導入成功。

 

2. 包含動態鏈接庫,但在 IDE 配置中未設置,這裏是 IntelliJ IDE 設置:

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

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

這裏的版本號是3.4.3,注意這裏就好。

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

OK,點擊正常運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章