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