catalinaの備忘録スマートフォン用の表示で見るcatalinaの備忘録ソフトウェアやハードウェアの備忘録。後で逆引きできるように。hololens前回つくったカード検出器をHololensで使ってみました。処理がやっぱり重いみたいで表示がカクつくくらいに気持ち悪いです。本当に負荷が原因なのか知るために、画像処理全体の負荷を下げて試すことにします。簡単に負荷を下げる方法として、カメラの設定(解像度、フレームレートなど)を下げてしまうことにしました。アルゴリズムによっては低解像度では使えないなど弊害はありうるので注意が必要です。簡単に試したい理由は、アルゴリズムの最適化をかける前に「そもそも負荷が低ければアプリとして成立するのか?」を確認したいからです。個人開発での限りある時間を無駄にはしたくないので。カメラ(MediaCapture)の初期化いつもどおりマニフェストファイルにカメラを使うよう設定してから、mediaCaptureクラスを使います。Platform::AgileはいわゆるスレッドセーフなCLRらしいです。初期化コードはこんな感じです。カメラの解像度を変更カメラ選択のUIとか作ろうかと思いましたが、面倒なのでやめました。実験だけのつもりなのでデバッガで出力して、パラメータを書き換えるだけのほうが手っ取り早いです。ここまででmediaCaptureはインスタンス化されていること。開始はしてなくてもよい。低解像度のプロファイルがとれたので、設定する簡単に説明。cap->VideoDeviceController->GetAvailableMediaStreamProperties(type)で、メディアのプロパティリストが取れます。このリストの要素はIMediaEncodingPropertiesというインターフェースなので、prop->GetType()->FullNameに目的のプロパティが入っていることを確認します。これはStringなので文字列比較です。目的の型が入っていることが確認できたら、その型にキャストしてからプロパティを読み出します。いうキャストって個人的にはちょっと嫌です。ダウンキャストっぽく見えて。ただの宗教観なので気にしないことにします。MSのサンプルコードもこういう形になっていたので。最後に取得したプロファイルをmediaCaptureに設定してあげれば完了です。asyncなのでtaskでラップしてあげるのを忘れずに。vp);というわけでこのコードをHololensの実機に放り込むと、サクサクとカメラ映像を処理できるようになりました。カード検出まわりのアルゴリズムをもうちょっと工夫すればなんとかなるレベルというわけですね。低解像度で検出できる仕組みを考えるか。感想C++らしくテンプレートで分岐できないかなと考えましたが、すぐには無理でした。いうのも、Stringの中身は実行時に確定するので、テンプレートを展開するコンパイル時にそれを判断する処理を入れるのにはちょっと工夫が必要になってしまいます。ここまで書いて気づきましたが、いわゆるvisitorパターンを実装してあげればキャストなしでいけそうな気がします。任意のメディア型をacceptするクラスを作る。visitorまで書き始めてしまうと今回の目的と比べると大がかりすぎるからやめておきます。22:33Hololensでカメラの解像度を変更するTweet広告を非表示にする関連記事2019-04-09WinRTを試してみる桜の花も散っていき、春から初夏への移り変わりを感じます。HoloLensでARをやってみました。かた...2017-03-15HololensでMediaCaptureを使ってカメラプレビューを取得するHoloLensで入力画像を処理する前準備をしました。»プロフィールid:Catalina1344ソフトウェアやハードウェアの備忘録。後で逆引きできるように。OpenMVSで3D再構築するOpenMVGを試してみる(環境構築+α)父の日ですね月別アーカイブ忍者AdMaxはてなブログをはじめよう!Catalina1344さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。