本來想放棄使用 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,點選正常運作。