最近Intel RealSenseテクノロジーの使用を開始したプログラマー向けに、R200カメラの機能を示す3つの簡単な例を含む投稿を準備しました。 含まれる例:
R200カメラの生ストリームを記録および表示する
このダウンロード可能なコードは、
Windows用インテル®RealSense™SDKを使用して、C#/ XAMLで未加工のR200カメラストリームを記録および表示する基本を示してい
ます 。 Visual Studio *ソリューションは、4つの単純なプロジェクトで構成されています(各サイズは200行以下のコードです)。
- ColorStream-RGBカメラからのカラーストリームを表示します。
- DepthStream-深度ストリーム表示。
- IRStreams-赤外線カメラの左右のストリームの表示。
- AllStreams-1つのウィンドウにリストされたすべてのものの表示(図1を参照)。
図1.すべてのスレッドのサンプルコードソフトウェア開発環境
このコードサンプルは、Microsoft Visual Studio Community 2015を使用してWindows®10 RTMで作成されました。このサンプルには、
Visual C# -Windows -
Classic Desktopプロジェクトテンプレートが使用されました。
このプロジェクトで使用されるSDKおよびDCMバージョン。
- インテル®RealSense™SDK v6.0.21.6598
- Intel®RealSense™Depth Camera Manager R200 v2.0.3.39488
ハードウェアの説明
この作業には、
インテル®RealSense™開発キット(R200)を使用しました。これには、カメラ、
USB3ケーブル、ラップトップにカメラを取り付けるための磁気マウントが含まれています(図2)。
図2.インテル®RealSense™開発キット(R200)サンプルコードR200には、次のハードウェア要件が適用されます。
- 第4世代(以降)のIntel®Core™プロセッサー。
- 150 MBのハードディスク空き容量。
- RAM 4 GB。
- Intel®RealSense™カメラ(R200)。
- R200カメラ用の使用可能なUSB3ポート(または統合カメラ用の専用接続)。
重要! カメラから送信されるデータストリームをサポートするには、USB3インターフェイスが必要です。 このインターフェイスは、クライアントシステムの専用USB3ポートに接続する必要があります(スプリッターを使用しない)。
コードの説明
Visual Studioのソリューションは、C#で開発された4つのWPFプロジェクトで構成されています。 これらのプロジェクトは、libpxcclr.cs.dll(マネージDLL)への明示的なパスを使用します。
C:\ Program Files(x86)\ Intel \ RSSDK \ bin \ x64システムのSDKが別のフォルダーにインストールされている場合は、このパスを忘れずに変更してください。
DLLの64ビットバージョンを起動しているため、メニューの[
プロジェクト ]→[
プロパティ ]→[
プラットフォームターゲット ]に移動し、値「x64」が選択されていることを確認します。
特定のプロジェクトをビルドして実行するには、ソリューションエクスプローラーでプロジェクト名(AllStreamsなど)を右クリックし、メニューから[
スタートアッププロジェクトとして設定 ]を選択します。
CameraStreams内のすべてのプロジェクトは同様の構造を持っています。
SessionおよびSenseManagerインターフェースを構成します。
AcquireFrame -
ReleaseFrameループを処理する
Updateというワークフローを実行します。
AcquireFrame -
ReleaseFrameループでは、次のアクションが発生し
ます 。
- 画像データの取得。
- Renderメソッドを呼び出して、ユーザーインターフェイスを更新します。
- リソースのリリース。
- フレームリリース。
Renderメソッドでは、次のアクションが発生します。
- ConvertBitmapメソッドを呼び出して、各ラスターフレームをBitmapImageタイプに変換します。これは、WPF Imageコントロールで各フレームを表示するために必要です。
- ユーザーインターフェイススレッドに関連付けられたディスパッチャに作業を委任することにより、ユーザーインターフェイスを更新します。
ShutDownメソッドは、
Window_Closingまたは
btnExit_Clickイベント
が発生するたびに
呼び出され ます 。
ShutDownメソッドでは、次のアクションが発生します。
- Updateメソッドの停止。
- オブジェクトを削除します。
深度フォーカス
この C#/ XAML
コード例は、Windows用インテル®RealSense™SDK *のEnhanced Photography(EP)を使用して、画像をキャプチャした後に画像の焦点を合わせる基本を示しています。 このサンプルコードは、次のアクションを実行します。
- ImageコントロールにR200のRGBカラーストリームを表示します(左)。
- フレームをキャプチャし、2番目のImageコントロールに表示します(右)。
- スライダーを使用して焦点と絞りを変更します。
- 変更した画像を標準のJPGファイル(Snapshot.jpg)として保存します。
図3.フォーカスの深さを変更する例(花に焦点を当てる)図4.保存された画像ファイルSDKマニュアル(
RSSDK_DIR \ doc \ PDF \ sdkmanuals.pdfファイル )で説明されているように、Enhanced Photography(EP)モジュールは、写真とビデオ。 被写界深度を変更する機能は、撮影後にフレームの焦点と被写界深度を変更します。 (このアルゴリズムはR200カメラでのみ機能することに注意してください。)
ハードウェアの説明
この作業にはIntel®RealSense™Developer Kit(R200)を使用しました。 カメラは、キットに含まれる磁気マウントを使用してラップトップに取り付けられました(図5)。
図5.磁気マウントに取り付けられたカメラアセンブリノート
このプロジェクトは
System.Drawing.Imaging名前空間を使用します。 リンクは手動で指定します。新しいプロジェクトで、ソリューションエクスプローラーの[
参照設定 ]を右クリックし、[
参照の 追加...]を選択してリンクマネージャーウィンドウを開きます。 次に、
アセンブリ、フレームワークを選択し、リストで
System.Drawingを見つけます。 チェックボックスをオンにして、[OK]をクリックします。
このプロジェクトでは、libpxcclr.cs.dll(マネージDLL)への明示的なパスを使用します:
C:\ Program Files(x86)\ Intel \ RSSDK \ bin \ x64 システムのSDKが別のフォルダーにインストールされている場合は、このパスを忘れずに変更してください。
プロジェクトはDLLの64ビットバージョンを参照しているため、「x64」パラメーターが
プロジェクト →
プロパティ →
プラットフォームターゲットセクション(プロジェクト→プロパティ→ターゲットプラットフォーム)で指定されていることを確認してください。
プロジェクトには、アンマネージDLL(libpxccpp2c.dll)がターゲット出力フォルダーにコピーされることを確認するビルド後イベントコマンドが含まれています。
if "$(Platform)" == "x86" (copy /y "$(RSSDK_DIR)\bin\win32\libpxccpp2c.dll" "$(TargetDir)" ) else ( copy /y
"$(RSSDK_DIR)\bin\x64\libpxccpp2c.dll" "$(TargetDir)" )
顔追跡
この C#/ XAML
コード例は、Windows用インテル®RealSense™SDK *の顔追跡アルゴリズムを使用して、R200を使用してリアルタイムで人の顔を検出および追跡する基本を示しています。 このサンプルコードは、次のアクションを実行します。
- ImageコントロールにR200のRGBカラーストリームを表示します。
- ユーザーの顔の位置を追跡する長方形のコントロールのオーバーレイ(ユーザーがカメラの視野のどこにいるかに応じて)。
- R200によって検出された顔の数を表示します。
- 追跡された顔の高さと幅を表示します。
- 追跡された顔の2次元座標(XおよびY)を表示します。
- 顔の深さ、つまりR200カメラから顔までの距離の表示。
- アラートトラッキング、イベントハンドラサブスクリプションをサポートおよび表示します。
図6.顔追跡コードのサンプルハードウェアの説明
この作業にはIntel®RealSense™Developer Kit(R200)を使用しました。 オプションの磁気マウント**を使用して、カメラを標準の三脚に取り付けました**(図7)。
図7.磁気マウントに取り付けられたカメラ(すべてのキットに付属しているわけではありません)アセンブリノート
前の例を参照してください。
コードの説明
サンプルコードの構造は次のとおりです。
SessionおよびSenseManagerインターフェイス、および顔認識モジュールを構成します。
AcquireFrame -
ReleaseFrameループを処理する
Updateというワークフローを実行します。
AcquireFrame -
ReleaseFrameループでは、次のアクションが発生し
ます 。
- 画像データの取得。
- 顔認識モジュールデータの取得。
- Renderメソッドを呼び出して、ユーザーインターフェイスを更新します。
- リソースのリリース。
- フレームリリース。
Renderメソッドでは、次のアクションが発生します。
- ConvertBitmapメソッドを呼び出して、各ラスターフレームをBitmapImageタイプに変換します。これは、WPF Imageコントロールで各フレームを表示するために必要です。
- ユーザーインターフェイススレッドに関連付けられたディスパッチャに作業を委任することにより、ユーザーインターフェイスを更新します。
ShutDownメソッドは、
Window_Closingまたは
btnExit_Clickイベント
が発生するたびに
呼び出され ます 。
ShutDownメソッドでは、次のアクションが発生します。
- Updateメソッドの停止。
- オブジェクトを削除します。