【ATU Book-S32V系列】 APEX 常用資料型態 ( UMat / Mat )

一.   概敘

前文回顧,從上一篇 APEX 搭建編譯環境 的介紹。相信各位已經安裝完成 Vision SDK  以及 Visual Studio Code,並可以利用 MakeFile 來編譯原廠範例 Demo 程式。後續,將教導各位如何開始撰寫代碼與使用 APEX,在此之前必須先認識撰寫 APEX 代碼所會用到的資料型態,以及特定的轉換規則,故於此篇文章作詳細的資料型態說明。

如同下圖 “APEX 技術指南-文章架構示意圖” 所示,此次介紹章節為 “ APEX 常用資料型態 ( UMat / Mat ) “。  在文章的最後,將會以 "擷取影像中感興趣的區域" 作為範例介紹,並教導正確的資料型態轉換方式。




二.   常用的資料型態 UMat / Mat 使用方式

所謂的 Mat 就是 OpenCV 常用存放資料的型態之一,而 UMat 則是起源於 OpenCL 處理並行處理的資料型態,適合搭配硬體達到加速的效果。此外在 OpenCV 2.x 版本後,開始支援 UMat,並能夠與 Mat 自由相互轉換。因此 VSDK 也效仿 OpenCV 建立屬於 S32V 系列的資料型態 vsdk::SUMat、vsdk::SMat、vsdk::UMat 以及 vsdk::UMat,以下說明 : 

1.  類型說明 : 

 

2.  轉換說明 : 

主要三種類型之 UMat / Mat 轉換,如下圖所示 cv::UMat 與 vsdk::UMat 可直接以等號方式互換,同理 cv::Mat 與 vsdk::Mat 亦可直接以等號方式互換型態。這裡, 必須注意的是 vsdk::SUMat 並不能直接與 cv::UMat  進行轉換,必須透過 vsdk::UMat 才可。

UMat 與 Mat 的轉換皆使用 opencv進行轉換,如下圖方式進行轉換。



若要轉換 vsdk 的 UMat 成 Mat 則需先轉成 cv的型態,如以下方式 :

將 UMat to Mat 的方式 :


將 Mat to UMat 的方式 :




3.  使用感興趣區域 (ROI) 範例說明: 

在影像處理中,擷取某一個欲處理或只作處理的區域,此作法稱為感興趣區域(ROI)。此小節利用此範例來實際演示資料型態的 UMat 與 Mat 的轉換 !!


Step 1 :  使用感興趣區域的宣告方式

宣告矩陣 UMatROI : 為欲宣告的矩陣變數名稱。

輸入矩陣 UMatSRC : 為來源矩陣。

輸入變數 x: 為欲擷取的某一點座標之水平方向之起始位置。

輸入變數 y: 為欲擷取的某一點座標之垂直方向之起始位置。

輸入變數 w: 為欲擷取的區域寬度。

輸入變數 h: 為欲擷取的區域高度。

Step 2 :  代碼介紹

   輸入一張彩色影像並擷取感興趣的區域
   

Step 3 :  執行結果

  利用上一篇所介紹的編譯方法與更改 BUILK 的方式,即可編譯成功上述代碼產生出執行檔,執行結果如下. . .
  這就有點類似裁剪的概念,將影像中感興趣的部分提取出來 !! 同時也示範 UMat 與 Mat 的資料型態轉換 !!

   


三.   參考文件

[1] NXP Official website : https://www.nxp.com/
[2] VisionSDK_ProgrammingExamples.pdf
[3] VisionSDK_UserGuide.pdf
[4] VisionSDK_SUMat_UMat.pdf

如有任何相關 APEX 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 APEX 的技術文章 !!敬請期待 【 ATU Book-S32V系列 】 !!


 

相關影片

【ATU Book-S32V系列】 APEX 常用資料型態 UMat 與 Mat

介紹 NXP S32V234 之 APEX 常用資料型態 UMat 與 Mat

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論