2012年11月20日火曜日

OpenCVでIP Cameraの画像を表示してみた


IP Cameraとして、TENVIS JPT3815が安く入手できるので購入してみた。

最初にカメラの設定が必要であるが、サイトから専用アプリをダウンロードし、有線イーサで接続し
パスワードや無線LANの設定を行った。


OpenCVでは、VideoCaptureのopenにURLを指定すれば、ストリームを再生できるはずである。

JPT3815のマニュアルでは、ストリーム出力がmjpegであったが、OpenCV 2.4.2のVideoCaptureでは、mjpegを解釈できないようで落ちてしまう。

mjepgのURLは、以下のようになる。

http://IPADDRESS/videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0


そこでだめもとでH264を指定したところ、表示することができた。

http://IPADDRESS/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0


ユーザ名と、パスワードが平文なのがあれだが、以下のコードでVGAサイズで表示できる。

std::string fname = std::string("http://192.168.1.100/videostream.asf?user=hoge&pwd=hoge&resolution=32&rate=0");

mCap.open(fname);

while(true) {

 mCap >> mat;

 cv::imshow("Capture", mat);

  cv::waitKey(15);
}

今後IRモードで遊んでみる。

2 件のコメント:

  1. こんにちは、大変参考になりました。
    ちなみに静止画像もキャプチャーできるのでしょうか??

    返信削除
    返信
    1. 返事が遅くなり、すいません。
      対象の機器を、TENVIS JPT3815と限定します。
      whileでループ内で、一回読み出しに成功すれば、ループから抜ければ静止画として取得できます。

      他の、IPカメラに関してはわかりません、。

      削除