top of page

Creating RTCs using OpenCV Python

 OpenRTM-aist Python版でOpenCV(Python)を使用したRTコンポーネントを作成する方法を解説します。

1. はじめに

 

 Webカメラの画像を取得し、表示するRTC「WebCam」を作成しながら、OpenCVを使ったRTCの作成方法を学びます。

 

それでは早速、RTコンポーネントを作成してみましょう。​
4. おわりに

 

 これでOpenRTM-aist C++版でOpenCV(C++)を使用したRTCを作成することができるようになりました。

今回作成したのは、OpenCVでWebカメラを使う場合のテンプレートになるものです。

ここで取得した画像に処理を追加することで、ロボットビジョンRTCを作ることができます。

これを参考に自分のRTCをどんどん作成してみて下さい。

2. コーディング

 

 まずはWebCamのテンプレートを生成しましょう。

テンプレートの生成には、RTミドルウェアの統合開発環境環境であるOpenRTPを使用します。

 

 WebCamのテンプレートの設定は以下のようになります。

今回いは純粋にOpenCVをRTCに組み込む方法を学ぶためにデータポートは設定しません。

 

  • モジュール名  WebCam

  • ベンダ名  あなたの名前

  • モジュールカテゴリ  TEST

  • 実行周期  30

  • アクションコールバック

onInitialize
onActivated
onDeactivated
onExecute

  • 言語 Python

 

 テンプレートを生成したらWebCam.pyに以下のコードを記述します。

以下のコードは抜粋となります。生成したテンプレートに当てはめて下さい。

  1. # Import RTM module

  2. import RTC

  3. import OpenRTM_aist

  4.  

  5. # Import OpenCV

  6. import cv2.cv as cv

  7.  

  8.     def onInitialize(self):

  9.         print('WebCamComp')

  10.         self.cap = cv.CaptureFromCAM(0)

  11.         

  12.         return RTC.RTC_OK

  13.  

  14.     def onActivated(self, ec_id):

  15.                 print('CreateWindow')

  16.                 cv.NamedWindow("Capture", 1)

  17.     

  18.         return RTC.RTC_OK

  19.     

  20.     def onDeactivated(self, ec_id):

  21.                 print('DestoryWindow ')

  22.                 cv.DestroyAllWindows()

  23.     

  24.         return RTC.RTC_OK

  25.     

  26.     def onExecute(self, ec_id):

  27.                 frame = cv.QueryFrame(self.cap)

  28.                 cv.ShowImage("Capture", frame)

  29.                 

  30.                 cv.WaitKey(1)

  31.     

  32.         return RTC.RTC_OK

 コードの解説を行います。

 

  •  5-6行目

OpenCVのモジュールをインポートします。

 

  • 9-10行目

CaptureFormCAMオブジェクトを生成します。

  

  • 15-16行目

Active状態のときに、Webカメラでキャプチャした画像を表示するウィンドウを生成します。

 

  • 21-22行目

InActive状態のときに、ウィンドウを破棄します。

 

  • 27行目

Webカメラから取得した画像を格納します。

 

  • 28行目

格納した画像を指定したウィンドウに表示しています。

次に、cv:waitKey()で1 msの間、キー入力を待ちます。

この処理は不要に思えますが、cv::waitKey()を行わないとウィンドウに画像を表示することはできないので注意して下さい。

3. 動作確認

 

 ネーミングサービスの起動後、WebCam.pyを実行して下さい。

コーディングができたら、プログラムを実行します。

 

■Windowsの場合

camera.pyをダブルクリックして下さい。

 

■Ubuntu / Raspbianの場合

ロボコンマガジン

$ python WebCam.py

RT System Editorを使用して、RTCをActive化しWebカメラの画像が表示されることを確認して下さい。

 

また、Inactive化したときにウィンドウが破棄されることも確認してください。

bottom of page