http://blog.csdn.net/winux123/article/details/51908102
私は、画像を保存する方法については、上記のリンクを見てお勧めmjpg_streamer学生を使用する方法がわかりません。
ここでは、ソースコードoutput_file.so変更し、その後数やカメラ制御時間を節約するには(いくつかの参照オンラインチュートリアルがあるチュートリアル以下)であります
オープンoutput_file.cファイルには、次の関数void *型のworker_threadコード(void *型の引数)ボディを追加します。
[10]チャーBUF; //
フラグ= 0 int型、写真の数を示す//カメラフラグ、
INT fd_com = 0; //開いているファイル記述子導管
INT stop_num = 0; //カウント撮影
(アクセス( "/ tmpに/場合 WEBCOM"、F_OK)<0)// 描いコマンドを受信するための名前付きパイプを作成します。
{
IF(はmkfifo( "を/ tmp / WEBCOM"、0666)<0)
のprintf(「FIFO写真作成に失敗しました\) "N-;
}
fd_com =オープン( "/ TMP / WEBCOM"、O_RDONLY、0666)。
もし(fd_com <0)
のprintf( "ファイルWEBCOMエラーを開きます");
しばらく(OK> = 0 &&!Pglobal->ストップ){追加した後
IF(フラグ== 0)
{
ながら(1)
{
読み取り(fd_com、BUF、はsizeof(BUF))。
IF(strncmpは(BUF、 "PIC"、3)== 0)//拍照片(最大数999)
{
IF((BUF [3] - '0'> = 0 && BUF [3] - '0' <= 9 )&&(BUF [4] - '0'> = 0 && BUF [4] - '0' <= 9)&&(BUF [5] - '0'> = 0 && BUF [5] - '0' <= 9)) //如果拍照数量正常
{
フラグ=(BUF [3] - '0')* 100 +(BUF [4] - '0')* 10+(BUF [5] - '0')。
BZERO(BUF、はsizeof(BUF))。
ブレーク;
}
}
}
}
在する場合(遅延> 0){
usleep(1000年*遅延)。
}添加後
++ stop_num;
IF(フラグ> 0)
{
IF(stop_num> =フラグ)ピクチャの//数が撮影停止到達
{
stop_num = 0;
フラグ= 0;
}
}
変更後、保存して再makeがoutput_file.so生成
Output_file.so output_file.so libの下に、元のルータは/ usr /を交換してください。
バックグラウンドで実行されているプログラム:mjpg_streamer -i "input_uvc.so -dは/ dev / video0 -r 1600x1200の" -o "output_file.so -d千-f / tmpに" &
1000 -d:写真ごとに1000ミリ秒を取ります
-f / tmpに:/ tmpに保存された写真
-r 1600x1200:画像サイズ
次に、名前付きパイプリングを/ tmp / WEBCOM撮影命令が送られました。
たとえば、次のように写真を撮る
エコーpic001>を/ tmp / WEBCOM
10枚の写真を撮る
エコーpic010>を/ tmp / WEBCOM
疑いコンタクトQQでの場合:821843478、一緒に探求します。