迅爲iTOP-i.MX6ULL開發板-移植OpenCv3.4.1

本章節將介紹 OpenCV 的移植方法,及結合 Qt 例程去進一步學習 OpenCV 識別圖像。本章節使用的資料已經放到了開發板網盤資料中,路徑爲:“11_Linux 系統開發進階\86_章節_移植 OpenCv3.4.1 使用資料”。


我們需要準備的資料:
1.開發板使用的是 i.MX6ULL 終結者,開發板裏面是 Yocto 文件系統。
2.使用 Ubuntu16.04
3.提供 opencv 源碼“opencv-3.4.1.zip”
4.QT 測試例程
86.1  安裝交叉編譯工具
移植的 QT 系統需要的交叉編譯器就是我們編譯 qt 的編譯器,因爲我們是 Yocto 系統,所以我們用編譯 Yocto 的編譯器來編譯 OpenCV。交叉編譯器爲:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf。設置交叉編譯器請參考 i.MX6ULL 終結者-開發板使用手冊 4.3 章節 搭建交叉編譯環境。
86.2 建 搭建 OpenCV  的編譯環境
1.在 Ubuntu 新建一個 opencv 文件夾。將迅爲提供的 opencv-3.4.1 源碼壓縮包複製到 opencv 這個目錄,解壓。然後再 opencv 目錄下新建 install,build 文件夾。build 文件夾是構建目錄 ,install 文件夾是安裝目錄。如圖 86.2.1 所示:

2.安裝 cmake 和 cmake-gui 工具
sudo apt-get install cmake cmake-qt-gui cmake-curses-gui

安裝完成提示安裝成功,作者是已經安裝過了,如圖 86.2.3 所示:

3. 進入 build 目錄下,執行指令 cmake-gui,開始配置 OpenCV 的環境執行完成後會出現圖形化工具cmake-gui。指定我們源碼的所在路徑和構建目錄。勾選 Advanced,再點擊 Configure 或者 Generate。

圖 86.2.4

4.選擇 Unix Makefiles,然後選擇 Specify options for cross-compiling,再點擊 Next。

5.填寫交叉編譯器的路徑,注意紅色部分請填寫自己的交叉編譯器路徑。
Operation System:topeet
Compilers C:
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
Compilers C++:
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
Targer Root:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/bin
指定交叉編譯工具的具體路徑,按個人路徑指定,其他按圖所示填寫,如圖 86.2.7 所示。

6. 我們還需要配置一些信息,點擊如下圖 CMAKE 處,在 CMAKE_EXE_LINKER_FLAGS 處添加上-lpthread -lrt -ldl。添加這些是指定依賴庫的鏈接參數。

7.再在 CMAKE_INSTALL_PREFIX 處指定安裝目錄,我們在上面已經新建了 install 安裝目錄。我們直接指定到該目錄即可。如果不指定,它會默認安裝到 Ubuntu 系統目錄/usr/local 下。這樣會直接替換我們/usr/local 下的庫。

8.至此我們配置完,現在我們需要生成 Makefile 等文件,我們先點擊 Configure,再點擊 Generat 就可以生成了。點擊了 Generate 後看到信息像如圖 86.2.10 一樣,表明生成成功。若出現報錯,請根據對話框裏的內容指定的文件去自行去檢查錯誤!一般都是交叉編譯器路徑不對造成的。配置完成生成文件後,我們點擊左上角關閉這個圖形化配置界面即可。

86.3 譯 編譯 OpenCV  源碼
1.在第 2 節配置完成後,首先在源碼目錄opencv-3.4.1/3rdparty/protobuf/src/google/protobuf/stubs/common.cc 這個文件下添加#define HAVE_PTHREAD 宏定義纔可以編譯的過。具體原因是 HAVE_PTHREAD 宏定義了 pthread 庫。在如圖 86.3.1位置添加即可。

2.修改完成後,返回於是 build 目錄下,可以看到 bulid 目錄下已經準備了構建文件。

3.我們直接輸入 make -j 16 構建即可。

4.編譯完成如圖 86.3.4,如果有出錯,先刪除 build 目錄下的所有文件,按第 2 節重新再來一次!

5.輸入 make install 安裝到指定目錄
make install

安裝成功如圖

6.進入 install 目錄下有如下幾個目錄表明成功。到此完成編譯!

 

86.4  打包文件系統
1.將提供的QT文件下載完成後,放到 install 文件夾下。進入/QT/demo目錄下。我們打開 opencv_pic.pro工程來看。
Ubuntu# vi opencv_pic.pro
注意 INCLUDEPATH 需要修改爲自己 OpenCV 安裝文件夾下的 include 路徑!我們修改好後,將開始編譯這個 Qt 工程

2.搭建完成後。在 Ubuntu 終端執行下面的指令來使能 Qt 交叉編譯的環境變量。Ubuntu# source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
在 opencv_pic.pro 同目錄下,執行 qmake 生成 Makefile,用於編譯 Qt 工程,如圖所示:

3.再執行 make 編譯 Qt 工程,編譯完成如圖

4.編譯完成後在當前目錄生成可執行文件 opencv_pic,如圖 所示。

5.我們需要把 opencv_pic 和 1.bmp 圖片拷貝到開發板的/home/root/目錄下。

然後把 home/topeet/opencv/install/lib 目錄下也就是 opencv 的安裝目錄下的 lib 下的庫文件拷貝到開發板 Yocto 系統的 lib/目錄下,如圖 86.4.6 所示。

6.然後我們使用命令 tar -vcjf ./rootfs.tar.bz2 .將文件系統打包

86.5  燒寫文件系統
1.燒寫前,我們先來修改 mfgtools 燒寫工具的一些配置。
如果您的板子是 EMMC 的,修改 cfg.init 如圖 所示:

如果您的板子是 NAND 的,修改 cfg.init 如圖所示:

2.將 rootfs.tar.bz2 通過 ssh 軟件放入 mfgtools 燒寫目錄 mfgtools_for_6ULL\Profiles\Linux\OSFirmware\files\linux 下面,uboot 和 kernel 使用 i.MX6ULL 終結者光盤資料裏開發板系統鏡像下面的鏡像,如圖 所示路徑的文件

3.撥碼開關 2 鍵撥爲 1,其他鍵爲 0,設置成 USB 串行啓動,然後點擊下圖按鈕進行燒寫。

燒寫完成進度條會變成綠色,如圖所示:

86.6  測試開發板
如果您的板子是 EMMC 的,撥碼開關撥成如圖 86.6.1 所指箭頭

如果您的板子是 NAND 的,撥碼開關撥成如圖 所指箭頭

然後啓動進入 uboot 模式,設置選擇屏幕
5 寸屏幕:setenv lcdtype 5.0
9.7 寸屏幕:setenv lcdtype 9.7
10.1 寸屏幕:setenv lcdtype 10.1
塑膠殼 7 寸屏幕:setenv lcdtype 7.0
金屬框 7 寸屏幕:setenv lcdtype 1024x600
HDMI 顯示器:Setenv lcdtype hdmi
保存配置的命令:saveenv
最後在輸入重啓命令:reset
重啓完畢,我們可以看到板子啓動,串口控制檯輸入以下命令運行程序

最終在屏幕上顯示圖像

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章