MRが楽しい

MRやVRについて学習したことを書き残す

k4a_mkv2imageでAzureKinectの記録ファイル(*.mkv)からカラー画像とデプス画像を出力する その2(ビルドと実行)

本日はAzureKinectの調査枠です。
AzureKinectの記録ファイル(*.mkv)からカラー画像とデプス画像を出力してみます。
前回記事の続きです。
bluebirdofoz.hatenablog.com

今回はビルドとアプリケーションの実行を行います。
f:id:bluebirdofoz:20191030072951j:plain

ビルドの実行

出力された k4a_mkv2image.sln ファイルを開きます。
ビルド設定を[Release][Win32]に設定して、メニューから ビルド -> ソリューションのビルド を実行します。
f:id:bluebirdofoz:20191030073118j:plain

すると著者環境では以下のエラーが発生しました。
f:id:bluebirdofoz:20191030073130j:plain

エラーを回避するため、kinect.hpp の内容を一部修正し、再ビルドを行いました。

20行目:namespace filesystem = std::filesystem;
↓
20行目:namespace filesystem = std::experimental::filesystem::v1;

f:id:bluebirdofoz:20191030073140j:plain

これでビルドが成功しました。
出力された Release フォルダ配下を確認すると、k4a_mkv2image.exe ファイルが出力されています。
f:id:bluebirdofoz:20191030073159j:plain

k4a_mkv2imageの実行

出力された k4a_mkv2image.exe を試しに実行してみます。
k4a_mkv2image.exe は実行時、以下の dll ファイルを参照します。
・depthengine_2_0.dll
・k4a.dll
・k4arecord.dll
opencv_core412.dll
opencv_highgui412.dll
opencv_imgcodecs412.dll
opencv_imgproc412.dll
opencv_videoio412.dll

これらの dll にパスが通っていない場合は、同ディレクトリに直接 dll をコピーすると直に利用できます。
f:id:bluebirdofoz:20191030073212j:plain

この際、以下のディレクトリから32bit版の dll をコピーするようにします。
・D:\AzureKinectSDK\K4A\sdk\windows-desktop\x86\release\bin
・D:\opencv\build\x86\vc15\bin

記録データ(*.mkv)は以下のサンプルデータを利用してみます。
www.microsoft.com
f:id:bluebirdofoz:20191030073232j:plain

取得した *.mkv ファイルをコピーして PowerShell 端末を開きます。
f:id:bluebirdofoz:20191030073245j:plain

以下のコマンドを実行して、k4a_mkv2imageを実行します。

.\k4a_mkv2image.exe -i="./OFFICE_SAMPLE_WFOV_UNBINNED.mkv" -s=true

f:id:bluebirdofoz:20191030073258j:plain

処理が成功すると、mkv ファイルと同名のフォルダが出力されます。
フォルダの中にはそれぞれ以下の画像ファイルが出力されています。
・color:カラー画像ファイル
・depth:デプス画像ファイル(-s オプション true 時 8bit深度、false時 16bit深度)
・infared:赤外線画像ファイル
f:id:bluebirdofoz:20191030073308j:plain

ツールで利用可能なオプションは以下の通りです。

オプションデフォルト値説明
-h, --help無しコマンドオプションを表示する
-i, --input無し入力するmkvファイルのパスを設定する(必須)
-s, --scalingfalseデプス画像と赤外線画像の深度を8bitで出力する。false時は16bitで出力する
-t, --transformfalseデプス画像の画像サイズをカラー画像に合わせる。false時はそのままのサイズで出力する
-q, --quality95赤外線画像のjpeg画質を設定する
-d, --displayfalse実行時に出力イメージをダイアログで表示する。false時は表示しない

mkvファイルを記録する場合

mkv ファイルを記録する手順は以下記事の「Azure Kinect DK Recorderの利用手順」を参照ください。
bluebirdofoz.hatenablog.com