Armadilloフォーラム

Armadilo810動画表示方法に関して

kazu_2012

2014年5月9日 9時54分

http://armadillo.atmark-techno.com/opencv_display

上記を参考に動画によるopencv動作を行っています。
添付ファイルでコンパイルは通りました。
動作させてみたいのですが、どのように実行コマンドを渡していいか悩んでいる状況です。
コメントいただけないでしょうか

[root@armadillo810-0 (pts/0) ~]# mjpg_streamer -i "/usr/lib/mjpg_streamer/input_
uvc.so -d /dev/video1 -yuv -r 640x480 --fps 5" -o "/usr/lib/mjpg_streamer/output
_http.so -w /usr/lib/mjpg_streamer/www"&
[root@armadillo810-0 (pts/0) ~]# MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video1
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: YUV
i: JPEG Quality......: 80
o: www-folder-path...: /usr/lib/mjpg_streamer/www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled

[root@armadillo810-0 (pts/0) ~]# opencv_sample 1
libv4l2: error setting pixformat: Device or resource busy
HIGHGUI ERROR: libv4l unable to ioctl S_FMT
libv4l2: error setting pixformat: Device or resource busy
libv4l1: error setting pixformat: Device or resource busy
HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT

(Capture:3146): Gtk-WARNING **: cannot open display:
[root@armadillo810-0 (pts/0) ~]#

ファイル ファイルの説明
opencv_sample.c
Makefile.txt
コメント

kensaku

2014年5月9日 15時34分

kensakuと申します。

外部の人間ですが、丁度mjpg-streamerを勉強(改修)している所ですのでいくつかコメントさせて頂きます。

まず「動画表示先」が何処によるかで使い方は変わります。
他PC等からブラウザ上で動画再生するのであれば下記サイトを御確認下さい。

http://armadillo.atmark-techno.com/opencv_display

上記サイトの動きとしては
・OpenCVプログラムで取得したカメラ画像をJPEGエンコードしてファイルシステムに格納
・mjpg-streamerが格納したファイルを拾い上げ、指定したポート(8080or8081)経由で動画ストリーミングを配信する
になります。

810ですと、上記サイトの記載にあるとおり、
「標準ではディスプレイ環境が備わっていないため、PCでの開発時のようにOpenCVのcvShowImage関数等を利用して処理結果を逐次確認する事が出来ません。」
になります。
 ※但しUSBのディスプレイを繋ぐといった荒業もありますが、基本構成環境にはありません

mjpg-streamerの起動指定方法について
> [root@armadillo810-0 (pts/0) ~]# mjpg_streamer -i "/usr/lib/mjpg_streamer/input_
> uvc.so -d /dev/video1 -yuv -r 640x480 --fps 5" -o "/usr/lib/mjpg_streamer/output
> _http.so -w /usr/lib/mjpg_streamer/www"&

mjpg-streamer自身(input_uvc.so)が自分でカメラ画像を取得、jpegエンコードして
8080ポートにmjpeg動画を流す動きになってしまいます。
input_uvcではなく、input_fileを使用しましょう。

また添付されたサンプルソースに関しても上記サイトのサンプルソースと比較して頂く事で
何処が悪いかはすぐ分かります。
cvShowImage()ではなく、cvSaveImage()でファイル保存させましょう。

以上。

> http://armadillo.atmark-techno.com/opencv_display
>
> 上記を参考に動画によるopencv動作を行っています。
> 添付ファイルでコンパイルは通りました。
> 動作させてみたいのですが、どのように実行コマンドを渡していいか悩んでいる状況です。
> コメントいただけないでしょうか
>
> [root@armadillo810-0 (pts/0) ~]# mjpg_streamer -i "/usr/lib/mjpg_streamer/input_
> uvc.so -d /dev/video1 -yuv -r 640x480 --fps 5" -o "/usr/lib/mjpg_streamer/output
> _http.so -w /usr/lib/mjpg_streamer/www"&
> [root@armadillo810-0 (pts/0) ~]# MJPG Streamer Version.: 2.0
> i: Using V4L2 device.: /dev/video1
> i: Desired Resolution: 640 x 480
> i: Frames Per Second.: 5
> i: Format............: YUV
> i: JPEG Quality......: 80
> o: www-folder-path...: /usr/lib/mjpg_streamer/www/
> o: HTTP TCP port.....: 8080
> o: username:password.: disabled
> o: commands..........: enabled
>
>
> [root@armadillo810-0 (pts/0) ~]# opencv_sample 1
> libv4l2: error setting pixformat: Device or resource busy
> HIGHGUI ERROR: libv4l unable to ioctl S_FMT
> libv4l2: error setting pixformat: Device or resource busy
> libv4l1: error setting pixformat: Device or resource busy
> HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT
>
>
> (Capture:3146): Gtk-WARNING **: cannot open display:
> [root@armadillo810-0 (pts/0) ~]#

kazu_2012

2014年5月14日 9時55分

kensaku様

コメント頂きありがとうございます。
ご指摘と解説により、少しずつですが理解して参りました。

mjpeg_streamerを色々を利用されているようですので、一つお聞きしたいのですが。
このコマンドに保存方法はあるのでしょうか。

参考程度の情報を頂けると幸いです。