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を設定してください。