ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

UE4でWebカメラの画像を取得する方法について( UE4.18以降 )

f:id:pafuhana1213:20180123150509j:plain

はじめに

UE4.18にてMedia Frameworkが大幅に改良されたのですが、その中にはWebカメラ対応が含まれています。
www.unrealengine.com


f:id:pafuhana1213:20180123150051p:plain
で、試した所、ノートPCのフロントカメラとHTC Viceのフロントカメラで正常動作を確認しました。(Viveの場合はSteamVR設定にてカメラを有効にすることをお忘れなく)

ということで、以前書いた記事の訂正・補足記事をかいた次第でありますです。
pafuhana1213.hatenablog.com

実装方法

とても簡単で、Media Playerに指定のWebカメラに対応したURLに渡すだけです。
f:id:pafuhana1213:20180123144354p:plain
blueprintue.com (コピペ用)
「Media Player」変数はMedia Player型で、指定のMedia Playerアセットを指定する必要があります。

上記の処理を入れることで、指定したMedia Playerが管理するMedia TextureにWebカメラの映像が出力されます。あとは、マテリアルやUMGなどでそのテクスチャを使えば、画面上にWebカメラ映像を表示する事が可能です。PCに接続されているデバイスによっては、「Enumerate Vide Capture Devices」から取得する配列からどの項目をOpenURLに渡すのかを判定する処理を書く必要が出てくるかと思います。

Androidのカメラ映像を取得したい場合


UE4.18から入った、Android Camera Playerを有効にし、プロジェクト設定のAndroid Cameraにて用途に応じた設定にすれば、Webカメラと同じ実装でAndroidカメラからの画像を使用する事が可能です。
f:id:pafuhana1213:20180123145229p:plain
f:id:pafuhana1213:20180123145422p:plain

最後に

以前に比べると簡単にカメラ画像を取得できるようになりました。ただその取得した画像に対して画像処理を掛けたい場合は少し考える必要があります。画像全体への単純な処理であればマテリアル上で処理を組むだけでいいかもしれませんが、それ以上になるとC++OpenCVの導入などを検討する必要が出てくるかと思います。未検証で申し訳ありませんが、OpenCVを導入する際は以下の記事が参考になるかもしれません。
Detailed Account Of Integrating OpenCV Into UE4 With VS2017 - Epic Wiki


ではでは~