mac環境下編譯Opencv4.0 以及在Processing中使用opencv4.0舉例
一、環境
Mac OS Sierra 10.12.6
Processing 3.4 https://processing.org/download/
Opencv 4.0.0 https://opencv.org/releases.html
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ ant -version
Apache Ant(TM) version 1.10.5 compiled on July 10 2018
$ python --version
Python 3.6.6 :: Anaconda, Inc.
$ cmake -version
cmake version 3.13.2
如果沒有安裝,則
brew install cmake 或者 brew upgrade cmake
brew install ant
二、下載opencv4.0.0
選擇 opencv4.0.0.zip 下載後解壓為 opencv4.0.0 資料夾。
三、下載opencv_contrib-4.0.0
選擇 opencv_contrib-4.0.0.zip 版本,與 opencv4.0.0 相對應。
https://github.com/opencv/opencv_contrib/releases
下載後,解壓成opencv_contrib-4.0.0資料夾,將opencv_contrib-4.0.0 複製到opencv4.0.0 資料夾內。
四、修改配置檔案
開啟 opencv4.0.4/opencv_contrib-4.0.0/modules/optflow/CMakeLists.txt ,在 python 前面加上 java
修改前:
set(the_description "Optical Flow Algorithms") ocv_define_module(optflow opencv_core opencv_imgproc opencv_video opencv_ximgproc opencv_imgcodecs opencv_flann WRAP python)
修改後:
set(the_description "Optical Flow Algorithms")
ocv_define_module(optflow opencv_core opencv_imgproc opencv_video opencv_ximgproc opencv_imgcodecs opencv_flann WRAP java python)
五、建立build環境
在opencv4.0.0資料夾下建立build資料夾,並進入build
六、執行配置
$cd opencv4.0.0/build
$ccmake ..
七、配置編譯項
ccmake執行後,彈出配置選單。
選單操作說明 >>
A、按上下箭頭選擇每一項;
B、回車 On/Off 切換開關
C、配置完成後,按字母 c 檢查配置;
主要關閉前兩頁的部分內容,我把前兩頁截圖,供參考。
如果配置正常,則選單會出現 g 的選項(見圖三)。
如果沒有出現 g 的選項,可能是因為環境不同,導致無法獲得配置需要的環境。
這時候,需要嘗試把一些 On 的配置項關閉。
(圖一)配置內容第一頁
(圖二)配置內容第二頁
(圖三)配置完成
8、編譯
配置完成後,編譯
執行:
make -j5
9、編譯完成
在 opencv4.0.0/build/bin 路徑下,有 opencv-400.jar
在 opencv4.0.0/build/lib路徑下,有 libopencv_java400.dylib 以及其他 .a 的檔案
10、設定 Processing 使用 opencv4.0.0
開啟 Processing,建立一個新專案,並儲存為 helloOpencv4
11、在Processing 選單選擇 Sketch --> Show Sketch Folder
彈出的新資料夾視窗,就是當前專案所在路徑。在當前資料夾內建立 code 目錄,然後把opencv4.0.0/build/bin/opencv-400.jar和opencv4.0.0/build/lib/libopencv_java400.dylib 複製到code資料夾中。
12、在Processing中使用opencv4.0.0
測試程式碼如下:
import org.opencv.core.Core;
void setup(){
size(640,400);
println(Core.VERSION);
println(Core.NATIVE_LIBRARY_NAME);
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
void draw(){
background(100,100,100);
}
執行後,彈出的視窗上什麼也沒有!
控制視窗會顯示 opencv的版本和 opencv_java400 的庫檔名稱。
如果有時間,把opencv4.0.0在Processing的例子寫一下。
《完》