[openrtm-users 02632] InPortデータ取得時のExceptionについて

27 posts / 0 new
Last post
soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02632] InPortデータ取得時のExceptionについて

openrtm-usersの皆さん こんにちは。真瀬です。 個人でRTMonAndroidを勉強しています。現在アプリを作成中ですが、わからないことが出てきましたので、メールさせて頂きました。アドバイス頂ければ、と思います。 

Undefined
sec
Offline
Last seen: 6 years 5 months ago
Joined: 2011-05-31 13:46
[openrtm-users 02633] InPortデータ取得時のExceptionについて

真瀬様

セックの中本です。
RTM on Androidの開発者の一人です。

お問い合わせの件について、回答いたします。

RTM on Androidが用意しているMarshalizerというクラスの中で、
受信したTimedOctetSeqのデータのアンマーシャリング(データの
解析)をおこなっているのですが、そこで受信データ用のバッファ
領域のサイズをオーバーしているため、エラーが発生しているよう
です。

RTM on Androidでは、データの受信最大サイズを32768バイトに制限
しているのですが、そのためかも知れません。

バッファの最大サイズを変更すれば受信できると思いますが、
USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか
分かりますか?

よろしくお願いいたします。

以上

(2012/08/13 1:10), soosan mr wrote:
> openrtm-usersの皆さん
>  
> こんにちは。
> 真瀬です。 
>
> 個人でRTMonAndroidを勉強しています。
> 現在アプリを作成中ですが、
> わからないことが出てきましたので、
> メールさせて頂きました。
> アドバイス頂ければ、と思います。
>  
>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02634] InPortデータ取得時のExceptionについて

中本さんこんにちは。真瀬です。御解答、ありがとうございます。Marshalizerクラスですね、勉強してみます。>バッファの最大サイズを変更すれば受信できると思いますが、
>USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか分かりますか?androidアプリをデバックして調べてみましたが、デバック・ログにはまだ見つけておりません。(ログに出ているかな、と思っているのですが)USBCameraAqcuireComp側のログですが、"7.39705 [FPS]"と出力されているだけでした。
USBCameraAqcuireCompのソースを解析しようと思い始めたところです。ちなみに、ソースですが、OpenRTM-aistのHPを見ています。(http://www.openrtm.org/openrtm/ja/content/openrtm-aist-100-rc1
C++版Windows専用ソース:OpenRTM-aist-1.0.0-RC1-win32.zip<フォルダ>・/C++/OpenRTM-aist/examples/USBCamera/<ファイル>
・USBCameraAcquireComp.cpp現状報告でした。また、連絡させて頂きます。ちなみにですが、>バッファの最大サイズを変更すれば受信できると思いますが、とありますが、RTM on Android側で変更する方法を知りません。教えて頂けないでしょうか?以上です。よろしくお願いします。
2012年8月13日 22:24 Hiroyuki Nakamoto <nakamoto@sec.co.jp>:

真瀬様

セックの中本です。
RTM on Androidの開発者の一人です。

お問い合わせの件について、回答いたします。

RTM on Androidが用意しているMarshalizerというクラスの中で、
受信したTimedOctetSeqのデータのアンマーシャリング(データの
解析)をおこなっているのですが、そこで受信データ用のバッファ
領域のサイズをオーバーしているため、エラーが発生しているよう
です。

RTM on Androidでは、データの受信最大サイズを32768バイトに制限
しているのですが、そのためかも知れません。

バッファの最大サイズを変更すれば受信できると思いますが、
USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか
分かりますか?

よろしくお願いいたします。

以上

(2012/08/13 1:10), soosan mr wrote:
> openrtm-usersの皆さん
>
> こんにちは。
> 真瀬です。
>
> 個人でRTMonAndroidを勉強しています。
> 現在アプリを作成中ですが、
> わからないことが出てきましたので、
> メールさせて頂きました。
> アドバイス頂ければ、と思います。
>
>

root
Offline
Last seen: 1 day 9 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 02635] InPortデータ取得時のExceptionについて

真瀬さん、中本さん

産総研 安藤です

画像のUSBCameraAcquire コンポーネントは出力がTimedOctetSeq
だったとおもいますので、データのサイズは

width x height x depth + long x2

になるかと思います。
#正確にはsequence型の付属情報を格納する領域が
#必要なので、あと数バイトは大きいと思いますが。。。。

受信バッファが32kB程度とのことですので、
(+ (* 120 90 3) 4 4) =>32408 byte

したがって、120 x 90 程度の画像であればバッファをあふれさせる
ことは無いかと思います。

OpenRTM-aist-1.0.0-RC版をお使いのようですが、理由があって
古いのをお使いなのでしょうか?
でなければ、1.1.0に付属の、DirectShowCam (or OpenCVCamera)
Scale コンポーネントを利用して、画像サイズを小さくしてAndroidに
送信してみると、とりあえずはうまくいくかもしれません。
#ただし、データ型はTimedOctetSeqからCameraImageに変更されています。

ただ、本質的な解決にはRTMonAndroid側のバッファ・サイズを大きく
剃る必要があるかもしれません。ソースは公開されていないようですので、
中本さんにお願いしてバッファサイズを大きくしたものを公開してもらう
しか無いかもしれませんね。(もしくはオプション指定で変えられる?)>よろしくです、中本さん

> 中本さん
>
> こんにちは。
> 真瀬です。
>
> 御解答、ありがとうございます。
>
> Marshalizerクラスですね、勉強してみます。
>
>>バッファの最大サイズを変更すれば受信できると思いますが、
>>USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか分かりますか?
>
> androidアプリをデバックして調べてみましたが、
> デバック・ログにはまだ見つけておりません。
> (ログに出ているかな、と思っているのですが)
>
> USBCameraAqcuireComp側のログですが、
> "7.39705 [FPS]"と出力されているだけでした。
>
> USBCameraAqcuireCompのソースを解析しようと
> 思い始めたところです。
>
> ちなみに、ソースですが、
> OpenRTM-aistのHPを見ています。
> (http://www.openrtm.org/openrtm/ja/content/openrtm-aist-100-rc1)
> C++版Windows専用ソース:OpenRTM-aist-1.0.0-RC1-win32.zip
>
> <フォルダ>
> ・/C++/OpenRTM-aist/examples/USBCamera/
> <ファイル>
> ・USBCameraAcquireComp.cpp
>
> 現状報告でした。
> また、連絡させて頂きます。
>
> ちなみにですが、
> >バッファの最大サイズを変更すれば受信できると思いますが、
> とありますが、
> RTM on Android側で変更する方法を知りません。
> 教えて頂けないでしょうか?
>
> 以上です。
> よろしくお願いします。
>
>
>
> 2012年8月13日 22:24 Hiroyuki Nakamoto :
>
>> 真瀬様
>>
>> セックの中本です。
>> RTM on Androidの開発者の一人です。
>>
>> お問い合わせの件について、回答いたします。
>>
>> RTM on Androidが用意しているMarshalizerというクラスの中で、
>> 受信したTimedOctetSeqのデータのアンマーシャリング(データの
>> 解析)をおこなっているのですが、そこで受信データ用のバッファ
>> 領域のサイズをオーバーしているため、エラーが発生しているよう
>> です。
>>
>> RTM on Androidでは、データの受信最大サイズを32768バイトに制限
>> しているのですが、そのためかも知れません。
>>
>> バッファの最大サイズを変更すれば受信できると思いますが、
>> USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか
>> 分かりますか?
>>
>> よろしくお願いいたします。
>>
>> 以上
>>
>> (2012/08/13 1:10), soosan mr wrote:
>> > openrtm-usersの皆さん
>> >
>> > こんにちは。
>> > 真瀬です。
>> >
>> > 個人でRTMonAndroidを勉強しています。
>> > 現在アプリを作成中ですが、
>> > わからないことが出てきましたので、
>> > メールさせて頂きました。
>> > アドバイス頂ければ、と思います。
>> >
>> >

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02637] InPortデータ取得時のExceptionについて

安藤さん、中本さんこんにちは。真瀬です。御返事、ありがとうございます。(返信が遅くすみませんでした)インラインで失礼します。>OpenRTM-aist-1.0.0-RC版をお使いのようですが、理由があって>古いのをお使いなのでしょうか?理由はありません。OpenRTM-aistのHPサンプルで、USBCameraAcquire.exeを紹介されていましたので、
利用しました。 >でなければ、1.1.0に付属の、DirectShowCam (or OpenCVCamera)>Scale コンポーネントを利用して、画像サイズを小さくしてAndroidに>送信してみると、とりあえずはうまくいくかもしれません。>#ただし、データ型はTimedOctetSeqからCameraImageに変更されています。やってみました。
但し、受信側Androidで新たな課題が出てしまいました。1.1.0に付属のDirectShowCam.exeは見つけられませんでしたが、DirectShowCamComp.exeは見つけました。同じく、Scale コンポーネントは見つけられませんでしたが、ScaleComp.exeは見つけました。※データ型はCameraImageです。安藤さんが書かれた、『Scale コンポーネントを利用して、画像サイズを小さく』とは、
DirectShowCamComp.exeから出力した動画を、ScaleComp.exeでサイズを小さくするイメージでしょうか?(具体的には、「120 x 90」に小さくするイメージでしょうか?)ここまでは試せそうなのですが、受信側Androidで課題が出ました。それは、InPort<CameraImage>を初期化するメソッドにおいて、jp.co.sec.rtm.RTCServiceのメソッドaddInPort()を利用して
m_inPortをaddしようとした時、--------------------------------------------------------import jp.co.sec.rtm.RTCService;import jp.go.aist.rtm.RTC.port.InPort;private InPort<CameraImage> m_inPort;private RTCService rtcService;
rtcService.addInPort(m_inPort);--------------------------------------------------------この時、エラー「org.omg.PortableServer.Servant を解決できません。」となってしまいます。メソッドaddInPort()の引数の型がimport jp.co.sec.rtm.InPort;でm_inPortの型が jp.go.aist.rtm.RTC.port.InPort;で違うからです。

私がInPort<CameraImage>に対応するRTCServiceを見つけられて
いないだけと思いますが、InPort<CameraImage>に対応するRTCServiceはどちらでしょうか?RTM on Androidの最新は、「1.0.2」(2012/07/30)ですね。一応、最新のRTM.jar(RTCServiceを含む)を配置してみましたが、エラーは解決できませんでした。アドバイス、よろしくお願い致します。>ただ、本質的な解決にはRTMonAndroid側のバッファ・サイズを大きく
>剃る必要があるかもしれません。ソースは公開されていないようですので、>中本さんにお願いしてバッファサイズを大きくしたものを公開してもらう>しか無いかもしれませんね。(もしくはオプション指定で変えられる?)>よろしくです、中本さんこちらも、興味があります。以上です。よろしくお願い致します。2012年8月14日 10:52 Ando Noriaki <n-ando@aist.go.jp>:

真瀬さん、中本さん

産総研 安藤です

画像のUSBCameraAcquire コンポーネントは出力がTimedOctetSeq
だったとおもいますので、データのサイズは

width x height x depth + long x2

になるかと思います。
#正確にはsequence型の付属情報を格納する領域が
#必要なので、あと数バイトは大きいと思いますが。。。。

受信バッファが32kB程度とのことですので、
(+ (* 120 90 3) 4 4) =>32408 byte

したがって、120 x 90 程度の画像であればバッファをあふれさせる
ことは無いかと思います。

OpenRTM-aist-1.0.0-RC版をお使いのようですが、理由があって
古いのをお使いなのでしょうか?
でなければ、1.1.0に付属の、DirectShowCam (or OpenCVCamera)
Scale コンポーネントを利用して、画像サイズを小さくしてAndroidに
送信してみると、とりあえずはうまくいくかもしれません。
#ただし、データ型はTimedOctetSeqからCameraImageに変更されています。

ただ、本質的な解決にはRTMonAndroid側のバッファ・サイズを大きく
剃る必要があるかもしれません。ソースは公開されていないようですので、
中本さんにお願いしてバッファサイズを大きくしたものを公開してもらう
しか無いかもしれませんね。(もしくはオプション指定で変えられる?)>よろしくです、中本さん

> 中本さん
>
> こんにちは。
> 真瀬です。
>
> 御解答、ありがとうございます。
>
> Marshalizerクラスですね、勉強してみます。
>
>>バッファの最大サイズを変更すれば受信できると思いますが、
>>USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか分かりますか?
>
> androidアプリをデバックして調べてみましたが、
> デバック・ログにはまだ見つけておりません。
> (ログに出ているかな、と思っているのですが)
>
> USBCameraAqcuireComp側のログですが、
> "7.39705 [FPS]"と出力されているだけでした。
>
> USBCameraAqcuireCompのソースを解析しようと
> 思い始めたところです。
>
> ちなみに、ソースですが、
> OpenRTM-aistのHPを見ています。
> (http://www.openrtm.org/openrtm/ja/content/openrtm-aist-100-rc1
> C++版Windows専用ソース:OpenRTM-aist-1.0.0-RC1-win32.zip
>
> <フォルダ>
> ・/C++/OpenRTM-aist/examples/USBCamera/
> <ファイル>
> ・USBCameraAcquireComp.cpp
>
> 現状報告でした。
> また、連絡させて頂きます。
>
> ちなみにですが、
> >バッファの最大サイズを変更すれば受信できると思いますが、
> とありますが、
> RTM on Android側で変更する方法を知りません。
> 教えて頂けないでしょうか?
>
> 以上です。
> よろしくお願いします。
>
>
>
> 2012年8月13日 22:24 Hiroyuki Nakamoto <nakamoto@sec.co.jp>:
>
>> 真瀬様
>>
>> セックの中本です。
>> RTM on Androidの開発者の一人です。
>>
>> お問い合わせの件について、回答いたします。
>>
>> RTM on Androidが用意しているMarshalizerというクラスの中で、
>> 受信したTimedOctetSeqのデータのアンマーシャリング(データの
>> 解析)をおこなっているのですが、そこで受信データ用のバッファ
>> 領域のサイズをオーバーしているため、エラーが発生しているよう
>> です。
>>
>> RTM on Androidでは、データの受信最大サイズを32768バイトに制限
>> しているのですが、そのためかも知れません。
>>
>> バッファの最大サイズを変更すれば受信できると思いますが、
>> USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか
>> 分かりますか?
>>
>> よろしくお願いいたします。
>>
>> 以上
>>
>> (2012/08/13 1:10), soosan mr wrote:
>> > openrtm-usersの皆さん
>> >
>> > こんにちは。
>> > 真瀬です。
>> >
>> > 個人でRTMonAndroidを勉強しています。
>> > 現在アプリを作成中ですが、
>> > わからないことが出てきましたので、
>> > メールさせて頂きました。
>> > アドバイス頂ければ、と思います。
>> >
>> >

isao-hara
Offline
Last seen: 4 years 6 months ago
Joined: 2011-06-04 18:20
[openrtm-users 02638] InPortデータ取得時のExceptionについて

真瀬さん:

こんにちは、産総研の原です。

USBカメラのキャプチャの件ですが、http://openrtp.jp/wiki/_default/ja/RTC
/index.html の
サイトにDirectShowを使ったカメラコンポーネントを置いています。こちらの方は、TimedOctSeqの
データ型で出力しますので、以前のものと置き換えて使えると思います。
また、出力される画像データもコンフィグレーションで画像のサイズを変更できますので、
Scaleコンポーネントは不要になります。

下の方にリンクのある

USBCapture_for_1.1.zip

をダウンロードして、コンパイルしてお使いください。
これは、OpenRTM-aist-1.1.0-RELEASEで動作確認済みです。
このコンポーネントで小さい画像を送信すればとりあえずは、バッファの問題はクリアすると思います。

(2012/08/19 4:10), soosan mr wrote:

安藤さん、中本さん

こんにちは。
真瀬です。

御返事、ありがとうございます。
(返信が遅くすみませんでした)

インラインで失礼します。

>OpenRTM-aist-1.0.0-RC版をお使いのようですが、理由があって
>古いのをお使いなのでしょうか?

理由はありません。OpenRTM-aistのHPサンプルで、
USBCameraAcquire.exeを紹介されていましたので、
利用しました。

>でなければ、1.1.0に付属の、DirectShowCam (or OpenCVCamera)
>Scale コンポーネントを利用して、画像サイズを小さくしてAndroidに
>送信してみると、とりあえずはうまくいくかもしれません。
>#ただし、データ型はTimedOctetSeqからCameraImageに変更されています。

やってみました。
但し、受信側Androidで新たな課題が出てしまいました。

1.1.0に付属のDirectShowCam.exeは見つけられませんでしたが、
DirectShowCamComp.exeは見つけました。
同じく、Scale コンポーネントは見つけられませんでしたが、
ScaleComp.exeは見つけました。
※データ型はCameraImageです。

安藤さんが書かれた、
『Scale コンポーネントを利用して、画像サイズを小さく』とは、
DirectShowCamComp.exeから出力した動画を、
ScaleComp.exeでサイズを小さくするイメージでしょうか?
(具体的には、「120 x 90」に小さくするイメージでしょうか?)

ここまでは試せそうなのですが、
受信側Androidで課題が出ました。
それは、InPort<CameraImage>を初期化するメソッドにおいて、
jp.co.sec.rtm.RTCServiceのメソッドaddInPort()を利用して
m_inPortをaddしようとした時、
--------------------------------------------------------
import jp.co.sec.rtm.RTCService;
import jp.go.aist.rtm.RTC.port.InPort;
private InPort<CameraImage> m_inPort;
private RTCService rtcService;
rtcService.addInPort(m_inPort);
--------------------------------------------------------
この時、エラー「org.omg.PortableServer.Servant を解決できません。」
となってしまいます。
メソッドaddInPort()の引数の型がimport jp.co.sec.rtm.InPort;で
m_inPortの型が jp.go.aist.rtm.RTC.port.InPort;で違うからです。

私がInPort<CameraImage>に対応するRTCServiceを見つけられて
いないだけと思いますが、InPort<CameraImage>に対応する
RTCServiceはどちらでしょうか?

RTM on Androidの最新は、「1.0.2」(2012/07/30)ですね。
一応、最新のRTM.jar(RTCServiceを含む)を配置してみましたが、
エラーは解決できませんでした。

アドバイス、よろしくお願い致します。

>ただ、本質的な解決にはRTMonAndroid側のバッファ・サイズを大きく
>剃る必要があるかもしれません。ソースは公開されていないようですので、
>中本さんにお願いしてバッファサイズを大きくしたものを公開してもらう
>しか無いかもしれませんね。(もしくはオプション指定で変えられる?)>よろしくです、中本さん

こちらも、興味があります。

以上です。
よろしくお願い致します。

2012年8月14日 10:52 Ando Noriaki <n-ando@aist.go.jp>:

真瀬さん、中本さん

産総研 安藤です

画像のUSBCameraAcquire コンポーネントは出力がTimedOctetSeq
だったとおもいますので、データのサイズは

width x height x depth + long x2

になるかと思います。
#正確にはsequence型の付属情報を格納する領域が
#必要なので、あと数バイトは大きいと思いますが。。。。

受信バッファが32kB程度とのことですので、
(+ (* 120 90 3) 4 4) =>32408 byte

したがって、120 x 90 程度の画像であればバッファをあふれさせる
ことは無いかと思います。

OpenRTM-aist-1.0.0-RC版をお使いのようですが、理由があって
古いのをお使いなのでしょうか?
でなければ、1.1.0に付属の、DirectShowCam (or OpenCVCamera)
Scale コンポーネントを利用して、画像サイズを小さくしてAndroidに
送信してみると、とりあえずはうまくいくかもしれません。
#ただし、データ型はTimedOctetSeqからCameraImageに変更されています。

ただ、本質的な解決にはRTMonAndroid側のバッファ・サイズを大きく
剃る必要があるかもしれません。ソースは公開されていないようですので、
中本さんにお願いしてバッファサイズを大きくしたものを公開してもらう
しか無いかもしれませんね。(もしくはオプション指定で変えられる?)>よろしくです、中本さん

> 中本さん
>
> こんにちは。
> 真瀬です。
>
> 御解答、ありがとうございます。
>
> Marshalizerクラスですね、勉強してみます。
>
>>バッファの最大サイズを変更すれば受信できると思いますが、
>>USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか分かりますか?
>
> androidアプリをデバックして調べてみましたが、
> デバック・ログにはまだ見つけておりません。
> (ログに出ているかな、と思っているのですが)
>
> USBCameraAqcuireComp側のログですが、
> "7.39705 [FPS]"と出力されているだけでした。
>
> USBCameraAqcuireCompのソースを解析しようと
> 思い始めたところです。
>
> ちなみに、ソースですが、
> OpenRTM-aistのHPを見ています。
> (http://www.openrtm.org/openrtm/ja/content/openrtm-aist-100-rc1
> C++版Windows専用ソース:OpenRTM-aist-1.0.0-RC1-win32.zip
>
> <フォルダ>
> ・/C++/OpenRTM-aist/examples/USBCamera/
> <ファイル>
> ・USBCameraAcquireComp.cpp
>
> 現状報告でした。
> また、連絡させて頂きます。
>
> ちなみにですが、
> >バッファの最大サイズを変更すれば受信できると思いますが、
> とありますが、
> RTM on Android側で変更する方法を知りません。
> 教えて頂けないでしょうか?
>
> 以上です。
> よろしくお願いします。
>
>
>
> 2012年8月13日 22:24 Hiroyuki Nakamoto <nakamoto@sec.co.jp>:
>
>> 真瀬様
>>
>> セックの中本です。
>> RTM on Androidの開発者の一人です。
>>
>> お問い合わせの件について、回答いたします。
>>
>> RTM on Androidが用意しているMarshalizerというクラスの中で、
>> 受信したTimedOctetSeqのデータのアンマーシャリング(データの
>> 解析)をおこなっているのですが、そこで受信データ用のバッファ
>> 領域のサイズをオーバーしているため、エラーが発生しているよう
>> です。
>>
>> RTM on Androidでは、データの受信最大サイズを32768バイトに制限
>> しているのですが、そのためかも知れません。
>>
>> バッファの最大サイズを変更すれば受信できると思いますが、
>> USBCameraAqcuireComp側から送信しているデータのサイズはどれだけか
>> 分かりますか?
>>
>> よろしくお願いいたします。
>>
>> 以上
>>
>> (2012/08/13 1:10), soosan mr wrote:
>> > openrtm-usersの皆さん
>> >
>> > こんにちは。
>> > 真瀬です。
>> >
>> > 個人でRTMonAndroidを勉強しています。
>> > 現在アプリを作成中ですが、
>> > わからないことが出てきましたので、
>> > メールさせて頂きました。
>> > アドバイス頂ければ、と思います。
>> >
>> >

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02639] InPortデータ取得時のExceptionについて

TO:原さんCC:安藤さん、中本さんこんにちは。真瀬です。紹介して頂いた「DirectShowCaptureComp.exe」を利用して、やってみました。コンフィグレーション画像でサイズを変更(120X90)したので、BufferOverflowExceptionは発生しなくなりました。ありがとうございます。 
この後の作業は2つあります。

sec
Offline
Last seen: 6 years 5 months ago
Joined: 2011-05-31 13:46
[openrtm-users 02641] InPortデータ取得時のExceptionについて

真瀬さん

セックの中本です。

> 上記

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02675] InPortデータ取得時のExceptionについて

セック中本さんこんにちは。真瀬です。以前、「RTMonAndroid-1.0.3-rc」を頂いたものです。その時は下記を試みていました。----------------------------------------------------PC側でWebカメラ動画をサンプルアプリ「〇〇.exe」を利用して出力し、
スマートフォン(android)側で動画データを受信して、
カメラで動画表示するアプリを作成する。
---------------------------------------------------- しばらく作業していなかったのですが、最近再開しました。今回はまず下記を試みようと思います。
----------------------------------------------------
PC側でWebカメラ動画をサンプルアプリ「DirectShowCaptureComp.exe」を利用して出力し、

スマートフォン(android)側で動画データを受信して、
ImageViewを表示するアプリを作成する。

----------------------------------------------------スマートフォン(android)側のソースコードは下記です。

----------------------------------------------------    // InPort    private InPort<TimedOctetSeq>    inPortData;    byte[] databyte = inPortData.read().toString().getBytes();  Bitmap bmp = BitmapFactory.decodeByteArray(databyte, 0, databyte.length);
    //画面表示    ImageView image = (ImageView)this.findViewById(R.id.image);    image.setImageBitmap(bmp); 

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

2012年8月24日 12:31 soosan mr <mr.soosan@gmail.com>:

中本さん こんにちは。真瀬です。お世話になっております。いつも迅速な対応ありがとうございます。 「RTMonAndroid-1.0.3-rc」を利用させて頂きます。(RTM.jarを入れ替えるイメージで考えています)
すみません、現在、別メールで書きました、「受信データを画面表示する」部分を実装しており、それが少しでも出来た時点で、
こちらをやりたいと思っています。私の勝手ですみません、一度画面表示したい、と思っています。以上です。よろしくお願いします。//真瀬2012年8月23日 9:51 Hiroyuki Nakamoto <nakamoto@sec.co.jp>:

真瀬さん

セックの中本です。
お世話になっております。

下記のRTMonAndroid-1.0.3-RCをお送りします。
ファイルの拡張子をzipからzi_に変更していますので、
zipに戻して使ってください。

これで、RTM on Android側でTimedOctetSeq型のデータを
受信できると思うので、お手数ですが試してみてください。

何かあれば、またお問い合わせください。
よろしくお願いします。

以上

(2012/08/23 9:34), Hiroyuki Nakamoto wrote:
> 真瀬さん
>
> セックの中本です。
>
>> 上記

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02676] InPortデータ取得時のExceptionについて

TO:セック中本さんCC:皆さん こんにちは。真瀬です。 以前、「RTMonAndroid-1.0.3-rc」を頂いたものです。その時は下記を試みていました。----------------------------------------------------PC側でWebカメラ動画をサンプルアプリ「〇〇.exe」を利用して出力し、スマートフォン(android)側で動画データを受信して、
カメラで動画表示するアプリを作成する。---------------------------------------------------- しばらく作業していなかったのですが、最近再開しました。今回はまず下記を試みようと思います。----------------------------------------------------PC側でWebカメラ動画をサンプルアプリ「DirectShowCaptureComp.exe」を利用して出力し、
スマートフォン(android)側で動画データを受信して、ImageViewを表示するアプリを作成する。---------------------------------------------------- スマートフォン(android)側のソースコードは下記です。====================================================================================
[A]InPortの定義   private InPort<TimedOctetSeq>    inPortData; [B]InPortデータ取得   byte[] databyte = inPortData.read().toString().getBytes(); [C]byte→Bitmapへの変換   Bitmap bmp = BitmapFactory.decodeByteArray(databyte, 0, databyte.length);
 [D]画面表示   ImageView image = (ImageView)this.findViewById(R.id.image);   image.setImageBitmap(bmp); ====================================================================================※NamingServiceを起動、InPortも初期化済である。RTSystemEditorを利用してデータ送受信。 
<現状の問題点>・[C]byte→Bitmapへの変換で、bmpが「null」となる <質問>

sec
Offline
Last seen: 6 years 5 months ago
Joined: 2011-05-31 13:46
[openrtm-users 02678] InPortデータ取得時のExceptionについて

真瀬さん

こんにちは、セックの中本です。

> <質問>
>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02679] InPortデータ取得時のExceptionについて

O:中本さんCC:原さんこんにちは。真瀬です。返信、ありがとうございます。
> ><質問>
> >

isao-hara
Offline
Last seen: 4 years 6 months ago
Joined: 2011-06-04 18:20
[openrtm-users 02680] InPortデータ取得時のExceptionについて

真瀬さん:

こんにちは。原@産総研です。
下記の件ですが、ソースコードを見ていただければ直ぐにわかると思いますが、
RGB24かRGB32だと思います。
どちらだっかよく覚えていませんが…。YUVに変換するならばキャプチャ側で
変換する方がよいと思いますが。

以上、よろしくお願い致します。

(12/10/14 12:16), soosan mr wrote:

O:中本さん
CC:原さん

こんにちは。
真瀬です。

返信、ありがとうございます。

> ><質問>
> >

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02681] InPortデータ取得時のExceptionについて

原さんこんにちは。真瀬です。返信、ありがとうございます。すみません、ソースコードが無いと思い込んでいました。ソースコードを確認したら、RGB24とRGB32が定義されていました。>どちらだっかよく覚えていませんが…。>YUVに変換するならばキャプチャ側で
変換する方がよいと思いますが。受信側は、RGBデータを受信する想定でいましたので、送信側がRGBで送信していることが確認できて良かったです。ありがとうございました。(続きは中本さんに確認させて頂きます)以上です。よろしくお願いします。2012年10月14日 12:38 Isao Hara <isao-hara@aist.go.jp>:

真瀬さん:

こんにちは。原@産総研です。
下記の件ですが、ソースコードを見ていただければ直ぐにわかると思いますが、
RGB24かRGB32だと思います。
どちらだっかよく覚えていませんが…。YUVに変換するならばキャプチャ側で
変換する方がよいと思いますが。

以上、よろしくお願い致します。

(12/10/14 12:16), soosan mr wrote:

O:中本さん
CC:原さん

こんにちは。
真瀬です。

返信、ありがとうございます。

> ><質問>
> >

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02682] InPortデータ取得時のExceptionについて

TO:セック中本さん こんにちは。真瀬です。 前回の記述に誤りがありました。すみませんでした。 送信側「DirectShowCaptureComp.exe」は、PCのWebカメラの画像データをRGBフォーマットで送信していることを確認しました。前回はYuvフォーマットと思いこんでいましたが、間違っていました。(YuvImageクラスの情報はありがとうございました)
 改めて受信側スマートフォン(android)側のソースコードを記述します。====================================================================================[A]定義   private InPort<TimedOctetSeq>    inPortData;   TimedOctetSeq dataTos;
 [B]InPortデータ取得   dataTos = (TimedOctetSeq)inPortData.read();   List<Byte> tosList = dataTimedOctetSeq.getData();   [C]byte[]への変換   byte[] databytetos = new byte[tosList.size()];   for (int i=0; i < tosList.size(); i++) {
    databytetos[i] = tosList.get(i);   }   [D]byte[]→Bitmapへの変換   Bitmap bmp = BitmapFactory.decodeByteArray(databytetos, 0, databytetos.length); [E]画面表示   ImageView image = (ImageView)this.findViewById(R.id.image);
   image.setImageBitmap(bmp); ====================================================================================※NamingServiceを起動、InPortも初期化済である。RTSystemEditorを利用してデータ送受信。  <現状の問題点>・[D]byte[]→Bitmapへの変換で、bmpが「null」となる
 <質問>

池添明宏
Offline
Last seen: Never ago
Joined: 2011-06-08 10:20
[openrtm-users 02684] InPortデータ取得時のExceptionについて

真瀬さん

こんにちは、セックの池添です。

>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02685] InPortデータ取得時のExceptionについて

セック・池添さんこんにちは。真瀬です。返信、ありがとうございます。RTMonAndroidの部分ではないので恐縮ですが、続けさせて頂きます。>BitmapFactory.Options opts = new BitmapFactory.Options();
>opts.inPreferredConfig = Bitmap.Config.RGBA_8888;
>Bitmap bmp = BitmapFactory.decodeByteArray(databytetos, 0, databytetos.length, opts);試してみました。やはり、下記エラーが発生します。----------------------------------------------------------------------------------------------
D/skia    (10020): --- SkImageDecoder::Factory returned null
----------------------------------------------------------------------------------------------もう少し調べてみます。 ちなみに、RTMonAndroid(java版)で画像、動画を送受信するサンプルはありますか?もしありましたら、URL等教えて頂けたらうれしいです。以上です。
よろしくお願いします。2012年10月16日 19:26 池添明宏 <ikezoe@sec.co.jp>:

真瀬さん

こんにちは、セックの池添です。

>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02690] InPortデータ取得時のExceptionについて

TO:セック池添さんTO:セック中本さんこんにちは。真瀬です。 現状、下記エラーで画面表示されない原因を調査しております。----------------------------------------------------------------------------------------------D/skia    (10020): --- SkImageDecoder::Factory returned null
---------------------------------------------------------------------------------------------- 調査中に気になったことがあり、質問させてください。Decodeできないので、フォーマットが気になっています。>DirectShowCaptureCompから出力するフォーマットをRGB32にして、
・質問

池添明宏
Offline
Last seen: Never ago
Joined: 2011-06-08 10:20
[openrtm-users 02691] InPortデータ取得時のExceptionについて

真瀬さん

池添です。

> ・質問

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02693] InPortデータ取得時のExceptionについて

池添さんこんにちは。真瀬です。返信、ありがとうございます。インラインで失礼します。>> ・質問

池添明宏
Offline
Last seen: Never ago
Joined: 2011-06-08 10:20
[openrtm-users 02694] InPortデータ取得時のExceptionについて

真瀬さん

池添です。

> 「高さ×幅×4バイト」の4バイトはどちらからきていますでしょうか?
> 画像データの根本についてわかっていなくてすみません。

Android側が要求している画像フォーマットはARGB_8888ですが、
これは1画素ごとにAとRとGとBの要素がそれぞれ8bitずつ並んでいる
フォーマットなので、合計4バイト(32bit)になります。

一方で、DirectShowCaptureCompはcvCreateImageの引数として、
depth=8, channels=3としているので、1画素ごとにRとGとBの要素が
それぞれ8bitずつ並んでいるフォーマットになり、合計3バイト(24bit)
になります。

古いOpenCVのものですが、cvCreateImageの仕様はこちら。
http://opencv.jp/opencv-1.1.0/document/opencvref_cxcore_init.html

なので、このフォーマットをあわせてやらないと
BitmapFactory.decodeByteArrayは失敗すると思います。

以上

(2012/10/25 18:44), soosan mr wrote:
> 池添さん
>
> こんにちは。
> 真瀬です。
>
> 返信、ありがとうございます。
> インラインで失礼します。
>
> >> ・質問

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02695] InPortデータ取得時のExceptionについて

池添さんこんにちは。真瀬です。 返信、ありがとうございます。>一方で、DirectShowCaptureCompはcvCreateImageの引数として、>depth=8, channels=3としているので、1画素ごとにRとGとBの要素が>それぞれ8bitずつ並んでいるフォーマットになり、合計3バイト(24bit)>になります。
 そういうことだったのですね。DirectShow.cppの下記でしょうか。    frame = cvCreateImage(cvSize(width, height), depth, channels);    image_size = width *height *channels;
ありがとうございます。 今後、どうしようか、ちょっと思案しています。質問ついでで大変恐縮ですか・・・(池添さんに確認することではないかもしれません)

池添明宏
Offline
Last seen: Never ago
Joined: 2011-06-08 10:20
[openrtm-users 02696] InPortデータ取得時のExceptionについて

真瀬さん

池添です。

> そういうことだったのですね。
> DirectShow.cppの下記でしょうか。
> frame = cvCreateImage(cvSize(width, height), depth, channels);
> image_size = width *height *channels;

はい。ここですね。

>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02697] InPortデータ取得時のExceptionについて

池添さんこんにちは。真瀬です。 返信、ありがとうございます。 >>

池添明宏
Offline
Last seen: Never ago
Joined: 2011-06-08 10:20
[openrtm-users 02698] InPortデータ取得時のExceptionについて

真瀬さん

池添です。

> cvCreateImage()の説明、確認しました。
> 修正箇所は、
> DirectShow.cppの11行目
> channels(3) → channels(4)
> と思います。

そうですね。

> 私には今環境がありません。すみません。

Visual C++ 2010 Expressであれば無償で入手できますよ。
http://www.microsoft.com/ja-jp/dev/express/default.aspx

カメラコンポーネントはVisual C++2010にも対応しているようです。
http://openrtp.jp/wiki/_default/ja/RTC/index.html

> DirectShowCaptureComp.exeは池添さんが作成したものでない
> ので別の方にお訪ねしたほうがよろしいでしょうか?

分かる範囲でなら答えますよ。

OpenRTM-aistのページ( http://www.openrtm.org )を参考にして
開発環境を整えて、DirectShowCapture_vc10.sln というファイルを
開いてビルドすれば大丈夫だと思います。

またハマるようであれば、このMLで聞いてもらえればいいと思います。

以上です。

(2012/10/29 10:47), soosan mr wrote:
> 池添さん
>
> こんにちは。
> 真瀬です。
>  
> 返信、ありがとうございます。
>  
> >>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02699] InPortデータ取得時のExceptionについて

TO:池添さんこんにちは。真瀬です。ビルドの件、情報ありがとうございます。作業時間を見つけてやってみます。(ちょっと時間をください)ビルドの件とは別にちょっと気になったので確認させてください。OpenCVがRBG24で、AndroidがARBG32なので、ロジックでOpenCVのデータの頭にalpha(FF)を追加すればできるかな、
と思いやってみました。しかし、結果としては画面に何も表示されませんでした。そこで、下記を思い出しました。
>  > あとは、AndroidとOpenCVで、ARGBの要素の並びが違う可能性があるので、
>  >変換処理に成功しても変な色の画像が表示されるかもしれませんね。OpenCVは、R,B,Gの順ではないのでしょうか?ソースを追ってみましたが、見つけられませんでした。「違う可能性」というところを教えて頂けますでしょうか?以上です。よろしくお願いします。
2012年10月29日 21:35 池添明宏 <ikezoe@sec.co.jp>:

真瀬さん

池添です。

> cvCreateImage()の説明、確認しました。
> 修正箇所は、
> DirectShow.cppの11行目
> channels(3) → channels(4)
> と思います。

そうですね。

> 私には今環境がありません。すみません。

Visual C++ 2010 Expressであれば無償で入手できますよ。
  http://www.microsoft.com/ja-jp/dev/express/default.aspx

カメラコンポーネントはVisual C++2010にも対応しているようです。
  http://openrtp.jp/wiki/_default/ja/RTC/index.html

> DirectShowCaptureComp.exeは池添さんが作成したものでない
> ので別の方にお訪ねしたほうがよろしいでしょうか?

分かる範囲でなら答えますよ。

OpenRTM-aistのページ( http://www.openrtm.org )を参考にして
開発環境を整えて、DirectShowCapture_vc10.sln というファイルを
開いてビルドすれば大丈夫だと思います。

またハマるようであれば、このMLで聞いてもらえればいいと思います。

以上です。

(2012/10/29 10:47), soosan mr wrote:
> 池添さん
>
> こんにちは。
> 真瀬です。
>
> 返信、ありがとうございます。
>
>  >>

soosan mr
Offline
Last seen: Never ago
Joined: 2012-08-02 02:00
[openrtm-users 02700] InPortデータ取得時のExceptionについて

TO:池添さんCC:皆さん真瀬です。報告です。>OpenCVがRBG24で、>AndroidがARBG32なので、>ロジックでOpenCVのデータの頭にalpha(FF)を追加すればできるかな、
>と思いやってみました。>しかし、結果としては画面に何も表示されませんでした。その後、受信した画像を、画面に表示することが出来ました。これで、一応、---------------------------------------------------------------------------------------------------------------------------------
(*)試した事PCのWebカメラ画像を、DirectShowCaptureComp.exeで送信し、スマートフォンのandroidアプリ(RTMonAndroid)で、データ受信して画面表示(ImageView)する
---------------------------------------------------------------------------------------------------------------------------------が出来ました。皆さん、今までいろいろアドバイスありがとうございました。次の課題は下記です。

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK