mjpg_streamerカメラOpenWrtの

前の記事では、mjpg_streamer画像を保存する方法を説明しています:


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、一緒に探求します。











38元記事公開 ウォン称賛10 ビューに10万+を

おすすめ

転載: blog.csdn.net/winux123/article/details/51944654