見出し画像

【Windows11】UnrealCV使ってみた【UE4】

0.はじめに

Unreal Engine4を組み合わせて人工知能の開発と行うと思い立ったところ,

UnrealCVというものを見つけたため,使い方を学ぶことと,備忘録を兼ねて執筆していきます.

開発の速報はYouTube,Instagram,Twitterなどで発信していますので,ご興味がありましたらフォローのほうよろしくお願いします.



-----------------------------------------

1.使用する参考サイト

このサイトのドキュメントを参考に作業していきます.

一部,コードなどを修正などしてやっていきます.


-----------------------------------------

2.サンプルバイナリの実行

ダウンロードしたexeを実行してみました.

とてもGPUを使用するので動作環境には気を付けましょう.

画像1


-----------------------------------------

3.Pythonコマンドからキャプチャ

▼Pythonからアプリ内をキャプチャしてみましょう.

from unrealcv import client
client.connect() # Connect to the game
if not client.isconnected(): # Check if the connection is successfully established
 print('UnrealCV server is not running. Run the game from http://unrealcv.github.io first.')
else:
 filename = client.request('vget /camera/0/lit')
 print(filename)
 filename = client.request('vget /camera/0/depth depth.exr')

▼lit.pngが保存されます.

画像2


-----------------------------------------

4.カメラ軌跡の保存

▼カメラの位置,画角を5秒ごとに5回保存する関数です.

import sys, atexit, argparse, json, time
sys.path.append('..')
from unrealcv import client
trajectory = []

# ---------------------------------
# save trajectory
#
def save_to_file(filename):
   print("save section.........")
   if len(trajectory) != 0:
       print("save section......... ok")
       with open(filename, 'w') as f:
           json.dump(trajectory, f, indent = 4)
if __name__ == '__main__':
   
   # ********************************************************
   # init
   #
   parser = argparse.ArgumentParser()
   parser.add_argument('--filename', default='camera-trajectory2.json')
   args = parser.parse_args()
   atexit.register(save_to_file, args.filename)
   
   
   # ********************************************************
   # connect
   #
   client.connect()
   
   # ********************************************************
   # record
   #
   for i in range(5):
       print("!! trajectory [{}]!!".format(i+1))
       rot = [float(v) for v in client.request('vget /camera/0/rotation').split(' ')]
       loc = [float(v) for v in client.request('vget /camera/0/location').split(' ')]
       trajectory.append(dict(rotation = rot, location = loc))
       time.sleep(1)
   if not client.isconnected():
       print('Can not connect to the game, please run the game downloaded from http://unrealcv.github.io first')
   else:
       time.sleep(5)

*ちなみに下記リンクに必要なファイルが用意されていました.





#Shorts
#unrealcv
#unrealengine
#unreal
#computervision
#machinelearning
#Python
#pythonprogramming


この記事が気に入ったらサポートをしてみませんか?