ConvertImageComponentの使用方法

RTCを起動する

他のモジュールと通信するためにRTCを起動します。

ReleaseフォルダのConvertImageComp.exeを実行してください。

動作確認

まずはCapturePresentationComponentとOpenRTM-aist付属のサンプルRTCのCameraViewerを起動します。

そして、CapturePresentationComponentのコンフィギュレーションパラメータを編集します。RTSystemEditorから編集ボタンを押してください。

そしてstring_encodeをjpegに設定してください。

これでCapturePresentationComponentの使用方法のページのようにキャプチャした画像をCameraViewerCompで表示しようとすると正常に表示できません。

そこでConvertImageComponentを間に接続することで正常に表示できるようになります。

2台以上のPCで通信する際にデータを送信する側のRTCが起動しているPCでConvertImageComponentでデータを圧縮して送信後、受信側のRTCが起動しているPCで起動したConvertImageComponentで元に戻すのが実践的な使い方だと思います。

コンフィギュレーションパラメータから圧縮の方式(string_encode)、圧縮率(int_encode_quality)を設定して送信してください。

先程の例ではstring_encodeがoffだったので無圧縮で送信しました。このためCameraViewerCompでも正常に表示されています。

ImageDataCom.cpp、ImageDataCom.hの利用

ImageDataCom.hで宣言されたGetCameraImage関数を使用することでCameraImage型のデータをOpenCVのIplImage型の変数に変換できます。画像データを圧縮していても変換できます。またSetCameraImage関数でIplImage型の変数から画像データをCameraImage型のデータに変換できます。引数で圧縮の方法、圧縮の形式を指定できます。

使用する場合はImageDataCom.cpp、ImageDataCom.hをプロジェクトに追加してImageDataCom.hをインクルードしてください。

CameraImage型のデータをIplImage型の変数に変換するには以下のように記述します。

IplImage *iplimage = GetCameraImage(&m_imageIn);

IplImage型のデータをCameraImage型の変数に変換するには以下のように記述します。

GetCameraImage(&m_imageIn, iplimage, m_string_encode, m_int_encode_quality);

ただしm_string_encodeは圧縮の形式で以下の3つのどれかを記述してください。

m_int_encode_qualityは圧縮率です。jpegの場合は1〜100、pngの場合は1〜10を設定してください。