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

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

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

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

Q&A

解決済

1回答

1276閲覧

スマホのカメラをPCで受け取るアプリを作りたい

OROCHI_TUNGUS

総合スコア31

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

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

1グッド

0クリップ

投稿2019/03/05 09:09

編集2019/03/06 00:44

こんにちは。現在スマホで撮った画像をPCで受け取るようなアプリを開発しています
そこでMonobitを使い、webCameraで撮った画像をPC側に送信するような機能を考えたのですが、使おうとすると後述のマスター側に設定したUnityがOutOfMemoryでハングしてしまいます

該当部分のソースは以下のようになります
ここでスマホ側をスレイブ、PC側をマスターと呼んでいます(データ送信はスレイブ→マスターのみです)
また、MatはOpenCVforUnityでの型です
ここでRPCの使い方が何か間違えているような気がするのですが、詳しい方ご教授願えませんでしょうか?
よろしくお願いします

C#

1void Update () 2{ 3 4 if (hasInitDone && webCamTexture.isPlaying && webCamTexture.didUpdateThisFrame) 5 { 6 // スレイブ時webCamTextureをマスターに送る 7 if(!SavingParameter.IsMaster) 8 { 9 // webCamTextureをmatに変換する 10 Utils.webCamTextureToMat(webCamTexture, rgbaMat, colors); 11 12 // matをbyteに変換する 13 byte[] tImageBytes = new byte[(int)(rgbaMat.total() * CvType.CV_8UC4)]; 14 rgbaMat.get(0, 0, tImageBytes); 15 16 // byteデータをマスターに送る 17 monobitView.RPC("GetTextureData", MonobitEngine.MonobitTargets.All, tImageBytes); 18 } 19 Utils.matToTexture2D(rgbaMat, texture, colors); 20 } 21} 22 23/// <summary> 24/// マスター時、テクスチャーの情報をスレイブから受信し、rebaMatに復元する 25/// </summary> 26[MunRPC] 27void GetTextureData(byte[] texturedata) 28{ 29 Mat tDistMat = new Mat(requestedWidth, requestedHeight, CvType.CV_8UC4); 30 tDistMat.put(0, 0, texturedata); 31 32 rgbaMat = tDistMat; 33} 34
bochan2👍を押しています

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

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

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

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

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

bochan2

2019/03/05 11:12

質問頂きありがとうございます。 試しに解像度を極端に下げてデバッグしてみるとどうなりますか?
sakura_hana

2019/03/05 12:19

OutOfMemoryしているのはマスター・スレイブのどちらですか? (どっちにしろ毎フレーム送受信は負荷がバカ高いはずなので、フレーム間引きするとか別スレッド化するとか必要だとは思いますが)
guest

回答1

0

ベストアンサー

毎フレーム画面バッファを送るとか通信側にしても受信側にしても不可が重すぎる気がします。
使いかたを間違えているというよりは発想そのものが時代的(技術的)に合っていない気がします。
もう一度検討し直してみてはいかがでしょうか?

投稿2019/03/06 01:14

stdio

総合スコア3307

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

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

OROCHI_TUNGUS

2019/03/06 09:20

ご回答ありがとうございます。 おっしゃる通りrgbaMatをそのまま送ると20Mくらいになるためさすがに重すぎたようです 修正してみたのですがそちらはOutOfMemoryは起きなくなったのですが別の問題が起きています。これは質問しなおしてGitに上げてみたほうがよいでしょうか?
stdio

2019/03/07 03:16

Gitに上げても、それは他人にデバックを任せる事になります。 冷たい事を言いますが、デバックをして欲しいならお金を支払って下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問