- RealSenseTM互動開發(fā)實戰(zhàn)
- 王曰海 湯振宇 吳新天
- 2179字
- 2019-01-03 00:39:36
2.6 SDK編程應(yīng)用舉例
1.DF_CameraViewer(C++)
DF_CameraViewer示例是一個簡單的C++控制臺應(yīng)用程序,主要展示獲取和渲染彩色、深度圖像流。
這個實例可用于快速檢測某些SDK接口。
DF_CameraViewer [-load <module name>] [-sdname<device name>] [-csize<resolution>] [-dsize<resolution>] [-file <Output Filename>] [-listio] [-record] [-help]
-load 加載指定模塊。
-csize 指定彩色數(shù)據(jù)流的分辨率和幀速率。例如使用640×480指定分辨率,或用640×480×30指定分辨率和幀速率。
-dsize 指定深度數(shù)據(jù)流的分辨率和幀速率。例如使用640×480指定分辨率,或用640×480×30指定分辨率和幀速率。
-sdname 指定輸入設(shè)備名稱。
-nframes 指定記錄的最大幀數(shù)。
-listio 列出輸入輸出設(shè)備。
-record 啟用文件記錄。使用文件選項來指定記錄文件名。
-le 指定記錄或播放文件名,SDK將攝像頭數(shù)據(jù)記錄到指定的文件中。如果-record未定義,則該示例將僅回放指定的文件。
SDK的安裝目錄的訪問權(quán)限并不可寫。如需記錄到文件中,指定在一個具有可寫權(quán)限目錄中的文件名。
-help 輸出幫助信息。
2.DF_Projection(C++)
DF_Projection實例演示了如何使用SDK投影功能。投影函數(shù)主要用于在彩色圖像坐標(biāo)系、深度圖像坐標(biāo)系和攝像頭坐標(biāo)系進行坐標(biāo)的映射或投影。本例主窗口如圖2-12所示。

圖2-12 DF_Projection主窗口
菜單欄包含以下標(biāo)簽:
- 設(shè)備(Device) 選擇成像設(shè)備。
- 彩色(Color) 選擇彩色分辨率。
- 深度(Depth) 選擇深度流分辨率。
- 模式(Mode) 選擇實時(默認)或回放模式。
- 命令(Command) 啟動或停止流。
圖像面板的彩色、深度和頂點數(shù)據(jù)如圖2-13所示。

圖2-13 圖像面板的彩色、深度和頂點數(shù)據(jù)
如果最初沒有顯示,可以單擊QueryInvUVMap按鈕顯示逆紅外映射。逆紅外映射完成從彩色圖像到深度圖像的坐標(biāo)映射。
如果最初沒有顯示,單擊QueryUVMap按鈕顯示紅外映射。紅外映射完成從深度圖像到彩色圖像的坐標(biāo)映射。
如果最初沒有顯示,單擊QueryVertices按鈕顯示頂點數(shù)據(jù),頂點數(shù)據(jù)位于3D空間。為了渲染簡便,例子中將頂點數(shù)據(jù)投影到2D平面進行可視化展現(xiàn)。當(dāng)移動鼠標(biāo)時,例子應(yīng)用了一些照明效果來展示一個虛擬3D效果。
可以在彩色、深度和頂點3個面板上顯示數(shù)據(jù)流。例子可將某個面板的坐標(biāo)映射到其他面板,并在其上進行相應(yīng)的繪制。對映射和投影方式也進行了標(biāo)注,如圖2-14所示。

圖2-14 不同面板間的坐標(biāo)映射
控制面板包含以下按鈕。
- CreateDepthImageMappedToColor和CreateColorImageMappedToDepth:分別創(chuàng)建對齊彩色或深度分辨率圖像,如圖2-15所示。
- 播放彩色流(和深度流)。
- 暫停流。
- 停止流。
- 水平方向鏡像流。
- 狀態(tài)欄:提供選定的分辨率、剪輯和流狀態(tài)等操作過程中的信息。

圖2-15 對齊的彩色和深度圖像
3.DF_RawStreams(C++,C#)
DF_RawStreams和DF_RawStreams.cs實例展示如何把原始深度和彩色流可視化,以及一些投影功能,其主窗口如圖2-16所示。

圖2-16 DF_RawStreams實例主窗口
從菜單中,可以選擇下列項目。
- 設(shè)備(Device):從輸入/輸出設(shè)備列表中選擇一個設(shè)備的流。
- 彩色、深度(紅外)、左、右(Color、Depth、Left、Right):選擇相應(yīng)的數(shù)據(jù)流配置,流的類型與攝像頭有關(guān)。
- 模式:選擇是否實時進行流直播、錄制或播放。如果選擇播放或錄制模式,則會提示播放或記錄文件名。
- C/D Sync:在可視化過程中,選擇是否使用同步或異步的彩色流和深度流。前者同步彩色圖像與相應(yīng)深度圖像的播放,而后者按各自的幀速率顯示。
4.FF_IQSampleTool(C#)
FF_IQSampleTool.cs應(yīng)用程序是基于FF_RawStreams.cs實例的。它展示了如何進行攝像頭的圖像質(zhì)量測試。它具備下列特點:
- 自動標(biāo)記跟蹤
- XYZ懸停深度輸出流
- 為紅外圖校準(zhǔn)誤差測試
- 深度均勻性試驗
- 絕對深度值的檢驗
此應(yīng)用程序需要使用一個PORT3測試圖。可以自己打印PORT3測試圖,SDK在Assets目錄下已包括Port3 Chart.pdf,如圖2-17所示。

圖2-17 PORT3測試圖
測試步驟如下:
1)獲取圖表。
2)設(shè)置測試區(qū)域。將攝像頭放置在離測試圖50厘米遠處,并確保PORT3圖與攝像頭的平面平行。如果不平行,測試結(jié)果會出現(xiàn)偏差。可以用一個盒子、一個金屬框架或者包含間隔物的測試圖等來做類似的測試。
3)啟動應(yīng)用程序。如果攝像頭加載成功,深度按鈕將變?yōu)榭捎茫贒evice下拉菜單中也能看到這個攝像頭。
4)選擇“彩色”按鈕,單擊“開始流”運行視頻采集。
5)對于標(biāo)志的跟蹤,程序必須知道測試圖的位置。要做到這一點,必須勾勒出測試圖的邊緣。將鼠標(biāo)光標(biāo)從測試圖的一個角拖動到另一個角,完成后單擊“設(shè)置RGB邊界”,如圖2-18所示。

圖2-18 測試圖邊界設(shè)置
6)確保基準(zhǔn)標(biāo)記處于合適位置,可以看到紅色方塊上所畫的黑色圓圈。也可以在黑色圓圈標(biāo)記的中心看到黑十字。在圖2-19中尋找正確的對齊方式(左)和不正確的對齊方式(右)。定位不當(dāng)可能源于不良照明(對于RGB視頻來講)或從邊緣選擇過程中引入的舍入誤差。如果標(biāo)記檢測不正確,需要重復(fù)步驟5),但應(yīng)選擇不同大小的標(biāo)記。

圖2-19 基準(zhǔn)標(biāo)記定位
7)屏幕應(yīng)該如圖2-20所示。

圖2-20 基準(zhǔn)標(biāo)記整體圖
8)選擇“深度”按鈕,視頻將變?yōu)閮H有深度視圖。
9)通過拖動鼠標(biāo)從一個角到另一個角,指定測試圖的邊緣,單擊“設(shè)置深度邊界”,如圖2-21所示。

圖2-21 設(shè)置深度邊界
10)視圖現(xiàn)在應(yīng)該如圖2-22所示。

圖2-22 設(shè)置后的視圖
11)注意基準(zhǔn)標(biāo)記畫在白色方塊上。綠色方塊是ROI(感興趣區(qū)域)的數(shù)組,用于均勻性試驗。檢查所有的基準(zhǔn)標(biāo)記對齊情況,所有的綠色區(qū)域要在深度圖范圍內(nèi)。如果不滿足,需要重復(fù)步驟9)。
12)單擊“運行測試”來分析數(shù)據(jù),測試包括:
- UV圖映射:校正誤差。UV圖將RGB流和深度流對齊。此測試計算對齊中的錯誤。使用測試圖時,可以看到這種錯誤的一個例子,如圖2-23所示。圖中圓形標(biāo)記不一致,即是紫外圖對齊錯誤。

圖2-23 深度數(shù)據(jù)覆蓋到彩色流上
- 絕對深度錯誤。這項測試主要測量突出的正方形和攝像頭表面間的深度,然后與記錄在黑色標(biāo)記中心的深度值進行比較。由于突出方塊的規(guī)格為12厘米×12厘米×5厘米,測量出的差異應(yīng)等于5厘米。
- 一致性檢驗。這個測試將創(chuàng)建一個ROI數(shù)組。每個ROI數(shù)組的深度數(shù)據(jù)被處理后得到平均值和標(biāo)準(zhǔn)方差,然后用于一致性測量。任何傾斜誤差都會在這些結(jié)果中得到顯現(xiàn)。
- Instant Node Package Manager
- Android應(yīng)用程序開發(fā)與典型案例
- C++程序設(shè)計(第3版)
- Java應(yīng)用與實戰(zhàn)
- 小創(chuàng)客玩轉(zhuǎn)圖形化編程
- Debian 7:System Administration Best Practices
- Java EE框架整合開發(fā)入門到實戰(zhàn):Spring+Spring MVC+MyBatis(微課版)
- NLTK基礎(chǔ)教程:用NLTK和Python庫構(gòu)建機器學(xué)習(xí)應(yīng)用
- R語言數(shù)據(jù)可視化之美:專業(yè)圖表繪制指南
- C語言程序設(shè)計立體化案例教程
- Python神經(jīng)網(wǎng)絡(luò)項目實戰(zhàn)
- Apache Mesos Essentials
- Drupal 8 Module Development
- Modern JavaScript Applications
- Keras深度學(xué)習(xí)實戰(zhàn)