質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

1365閲覧

unity カメラの映像を外部(API)に送りたい

Flan.

総合スコア123

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2020/04/27 20:28

編集2020/04/28 19:10

unity内カメラの映像を pythonに送りたいんですがやり方がわかりせん
目的のコード もしくはカメラの映像を取り扱う関数などを調べても出てきません
C#は初心者です 原理だけ説明とかはやめてください
APIのほうはできてます

条件として
スクリプトはカメラ以外 別のオブジェクトにつける
カメラは二つ以上ある(一つのスクリプトですべて制御)
送るデータは縦*横*3の行列で送る(python側でも映像としてつかえたらOK)
apiはML-Agents

質問の編集↓
試したこと 何をすればいいのかまったくわからなかった なんて検索したらいいかもわからない

1フレームずつ分けて送りたい pythonでいうところのlist(?) C#にもあるかはわかりませんが
(Vectar3とかいうやつは3つの要素がある配列..なのかな?)
カメラのサイズが720480なら 720480*3(3は三色)の配列

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ML-Agentsは素人なので、変なことを言っていたらすいません。
(とはいえ、ML-Agentsまで知っている方はあまりいないと思いますので、とりあえず回答します)

こちらのページの以下の箇所が参考になりそうです。

C#

1 public override void CollectObservations() 2 { 3 //車載カメラの映像を取得 4 CollectVideo(); 5 var cols = targetTexture.GetPixels(); 6 foreach (var col in cols) 7 { 8 //車載カメラの映像を入力 9 AddVectorObs(col.b); 10 } 11 //慣性を入力 12 AddVectorObs(rb.angularVelocity.y); 13 }

C#

1 void CollectVideo() 2 { 3 var tex = camera.targetTexture; 4 targetTexture = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false); 5 // RenderTextureキャプチャ 6 RenderTexture.active = camera.targetTexture; 7 targetTexture.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0); 8 targetTexture.Apply(); 9 }

なお、「カメラとRenderTextureの設定が必要(やり方はページに載ってます)」「RGBのBしか取得していない」という点に注意してください。

投稿2020/04/29 04:00

編集2020/04/29 04:16
fiveHundred

総合スコア9908

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず設計の話になります。

  • ビデオキャプチャ方法

C# video capture 辺りのワードで調べたら出てきますが、どれも楽ではないかもしれません。

  • 送信データ形式

画像フォーマット、生の画像を送るか、PNG等の圧縮形式で送るかなど。画像のビット数やRGBAの並びなど色々ありますが、場合によってはフォーマット変換処理が必要でしょう。

  • Pythonへの受け渡し方法

色々な方法が考えられるためベストプラクティスは分かりませんが、過去の投稿で、memory-mapped fileでの受け渡しという提案があります。
c# - Pythonでメモリでのファイル受け渡し

  • 受信データ復号方法

圧縮形式で送るなら、APIに渡す前に生の画像に複合する必要があるかもしれません。受け入れられる画像フォーマットによっては、フォーマット変換処理も必要になるでしょう。

ご質問内容だけでは少し漠然としすぎているので、これら個別でどのあたりで引っかかっているか質問したら、もう少し詳細な回答が得られると思います。

投稿2020/04/28 00:19

編集2020/04/28 00:44
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Flan.

2020/04/28 19:17

知りたいのはスクリプト内で変数( 縦*横*3のlistにする方法) です  これ以上日本語だけで詳しく言うほどげんごりょくはないし単語もおもいうかばないですすいません
退会済みユーザー

退会済みユーザー

2020/04/29 12:12

多分、やりたい事に対してまだ致命的に知識が足りてない気がします。 どこまでが出来てて、何が出来てないかが把握できないとアドバイスのしようがないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問