書接上文,本期小編將帶著大家一起來搭建開發(fā)環(huán)境,并最終將編譯出來的代碼部署到目標(biāo)平臺。
相信大家已經(jīng)迫不及待,話不多說,直接開整。
說在前頭,有幾個小工具需要提前安裝下:
為了保證最終鏡像的調(diào)試與驗證, 安裝MCUXPresso作為調(diào)試IDE,然后還需要一個串口終端來查看打?。ɡ?a href="http://ttokpm.com/tags/te/" target="_blank">TeraTerm,Putty等)
安裝Git軟件,負責(zé)獲取OpenCV源碼以及后續(xù)代碼的維護
當(dāng)然,如果想在Linux下開發(fā)的話,可能還需要一丟丟的Linux操作基礎(chǔ)。
不過,小編這里就以Windows為例進行說明了,Linux環(huán)境下的操作可以說:如有雷同,那必然不是巧合。
環(huán)境搭建
1. 下載OpenCV源碼:https://github.com/opencv/opencv.git 找一個喜歡的位置,執(zhí)行以下指令,獲取源碼:
git clone --depth=1 https://github.com/opencv/opencv.git
2. 下載安裝Windows特供版CMake:https://cmake.org/files/v3.10/cmake-3.10.2-win64-x64.zip 再找一個我們喜歡的位置,解壓之:
your_path/cmake-3.10.2-win64-x64
3. 之前說到,因為我們這里不借助IDE來進行代碼的編譯工作,就需要依靠Make工具來完成這一任務(wù)。下載MinGW,https://sourceforge.net/projects/mingw/files/latest/download 這里已包含了Make工具。下載完成后就是一鍵下一步,直到安裝成功:
your_path/MinGW
4. 選擇交叉工具鏈,有兩個選擇:Keil提供的ARMCLang,或是MCUXpresso中提供的gcc工具鏈arm-none-eabi-gcc??紤]到Keil作為收費軟件,這里直接選擇后者。
不過,這里只是編譯代碼的工具不同而已,不會影響后續(xù)OpenCV代碼的配置。
5. 從小編自己的代碼倉庫https://gitee.com/crist_xu/opencv_mcu 找到下面兩個文件夾,放到上面下載的OpenCV代碼路徑中:
fake_root中是一些頭文件和工具鏈配置文件。
opencv32_stdint用來重新定義int類型,這個是必要的。
OpenCV模塊配置
1. 在源碼路徑下,新建文件夾用來存放編譯后的代碼,起名build。之后在此文件夾中執(zhí)行:
your_path/cmake-3.10.2-win64-x64incmake-gui.exe ...
打開CMake,長這個樣子:
2. 點擊Configure,進行工程配置
這里能夠指定工程管理工具,如果想使用MCXPresso IDE的話,可以選擇Eclipse CDT4 – MinGW Makefiles 這樣一來會生成一個eclipse 工程,就可以使用IDE操作了。
不過,小編要反其道而行,選擇MinGW Makefiles,這樣我們可以直接使用命令行的形式進行代碼編譯。
之后點擊Specify toolchain file for cross-compiling并點擊Next:
下一步是修改工具鏈文件,指定編譯器路徑等。
在上文提到的fake_root文件夾中找到armgcc.cmake / gcc.cmake,如果想要使用ARMCLANG,編輯armgcc.cmake:
這里的HELPER_FILE_PATH就是fake_root文件夾的位置;而TOOLCHAIN_DIR是Keil的安裝位置,主要是為了讓CMake能夠找到對應(yīng)的工具鏈。
如果是想要使用gcc的話,就打開編輯gcc.cmake:
這里的HELPER_FILE_PATH依舊是fake_root文件夾的位置,而TOOLCHAIN_DIR這里就是MCUXpresso的對應(yīng)位置。
修改好之后,直接選擇GCC作為工具鏈并點擊繼續(xù):
點擊Finish:
等待配置運行結(jié)束,所有屬性將以紅色字體高亮顯示:
3. 模塊配置,最好是先點擊Grouped以及Advanced,這樣一來模塊被歸類,就可以很容易找到那些關(guān)鍵分子。
這里我們回憶一下上一篇文章提到的,因為OpenCV包羅萬象,擁有眾多模塊。而不是所有的模塊都適合運行在MCU平臺上,例如那些需要依賴于OS支持即多進程的模塊,因此需要進行小心的適配:大家一定要嚴格按下表進行配置勾選:
groups | options |
Ungrouped Entries | Unchecked all |
BLAS | Skipped |
BUILD |
Checked: BUILD_JPEG, BUILD_OPENJPEG, BUILD_PNG, BUILD_opencv_core, BUILD_opencv_features2d, BUILD_opencv_highgui, BUILD_opencv_imgcodecs, BUILD_opencv_imgproc, BUILD_opencv_video BUILD_opencv_world |
CLAMDBLAS | Skipped |
CLAMDFT | Skipped |
CMAKE | Skipped, but can change the CMAKE_BUILD_TYPE(Debug / Release) if you want |
CPACK | Unchecked all |
CPU | Skipped |
CV | Unchecked all |
DC1391 | Skipped |
ENABLE | Unchecked all except the ENABLE_FAST_MATH |
HIGHGUI | Unchecked |
HOST | Skipped |
INSTALL | Skipped |
OPENCV | Checked: OPENCV_DISABLE_FILESYSTEM_SUPPORT, OPENCV_DISABLE_THREAD_SUPPORT, OPENCV_ENABLE_MEMALIGN |
OPJ | Unchecked all |
OpenBLAS | Skipped |
PNG | Skipped |
PYTHON2 / PYTHON3 | Skipped |
VIDEOIO | Unchecked all |
WITH | Checked: WITH_OPENJPEG, WITH_PNG |
ZLIB | Skipped |
之后再次點擊Configure并點擊Generate:
4. 代碼編譯:在build文件夾中,打開PowerShell命令行,運行Make:
your_path/MinGW/bin/mingw32-make.exe -j7
?
?
5. 經(jīng)過漫長的等待,會獲得5個靜態(tài)庫,libopencv_world.a,這是build/lib下所有圖像處理函數(shù)的大集合;其他四個是針對圖像編解碼的函數(shù):
至此,我們就基本完成了OpenCV源碼的配置與編譯,并最終獲得了5個可愛的靜態(tài)庫,下一步就是如何將其部署到我們的MCU平臺上。
編輯:黃飛
?
評論
查看更多