12/8/2023
其實我今天只是拿剛好正在學習的 opencv 來作為我今天學習的例子,原本我是在 Python 上面操作 opencv,但由於我想要在樹莓派上面運行 opencv,而由於樹莓派的 cpu 性能沒有很好,要編譯像 Python 那樣的高階語言會有性能不足的問題,導致像視訊等的及時性程式在運行時會非常得卡,所以我就想要使用效率更高的 C++ 來使用 opencv,於是就誕生了這樣的筆記。
希望我能夠紀錄我這次的開發過程,讓我可以透過紀錄過程去梳理我這次的開發所學習到的東西。
是的,電腦原生具備的軟體還是不太夠用,需要額外下載一些第三方軟體才能完成完整的建置流程,這裡將最小幅度地介紹一些小工具給大家。
Homebrew 是一個在 Mac 上常用的套件管理系統,它可以很方便地將許多第三方套件放在 brew 底下進行管理,同時它也具備自動安裝、自動移除、自動更新等功能,讓你只要一行指令就可以輕鬆做到以上各種事情,不需要像以往可能在要用到某個套件時發現已經過時了才要一個個手動更新,這是為了等下要裝 CMake 時會用到的。
附上HomeBrew 的官網連結,裡面就有詳細的介紹以及安裝方式
這個如果你是用 Mac 的話,你可以去下載 CommandLineTools,裡面有 Apple 自家的 Clang,你可以將其理解為 Apple 獨家的編譯系統,作為 GNU 的替代品。
CMake 是一個可以自動幫你建製 Makefile 的第三方套件,簡單來說就是幫你執行從編譯到安裝的一切的工具,如果只是單純為了要建置環境的話,你只要安裝好就好了
安裝方式很簡單,剛剛已經讓你裝完 Homebrew 了,所以你只需要打開 Terminal 並執行:
$ brew install cmake
就可以直接使用了。
當你的前置工作都做完之後,就可以開始建置 opencv 的作業了
首先我們先到 opencv 的官方 github 去下載整個資料包,並找個暫時的地方解壓縮
opencv 的官方 github 頁面
找個地方解壓縮
解壓縮完之後,我們打開 Terminal 並將當前的 directory 切換到你剛才解壓縮的 opencv 的資料
在 terminal 執行以下指令:
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
指令的意思如下:
注意:
在執行 make 指令後會開始編譯工作,會花上一點時間,這段時間請不要關機或關掉運作中的視窗,不然就要從頭開始喔~
$ g++ <filename>.cpp -I<install path> -o <executable> -lopencv_core -std=c++11
原始:
$ g++ main.cpp -I/usr/local/include/opencv4 -o main -lopencv_core -std=c++11
透過上面的指令,就可以編譯 C++ 程式並生成 executable,然後方能執行你所寫的程式。
說明:
這只是開始,之後應該會往如何編寫 makefile(或 cmake) 和 shellscript 研究,這樣就可以將前面所有的步驟都一鍵化,如此一來要在不同裝置上快速使用就會比較方便。
後續發現要一個個用 -l 去 link 每個函式庫實在太麻煩,於是就上網找到了使用 pkg-config 套件去自動抓取的方法,但問題是我在編譯時的流程是沒有滿足使用這個方法的條件的,所以要在編譯流程上有細節上的修改,才能創建出使用這個方法所需要的 opencv.pc 檔。
關於這個流程,我參考了這個網站的教學,因為是現成的,我就不特地再寫一次了,直接貼連結,供參。