質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.03%

  • OpenCV

    824questions

    OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

usbカメラによるカメラキャプチャで現在のフレームを取得できない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 342
退会済みユーザー

退会済みユーザー

前提・実現したいこと

OpenCVでカメラキャプチャのプログラムを作成しています。

発生している問題・エラーメッセージ

現在のフレームが欲しいのですが、最初のキャプチャで5フレーム取得し、
その後のキャプチャでこのバッファをPushしているようで、5フレーム遅れた画像が取得されます。

該当のソースコード

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>
#include <unistd.h>

int main()
{
    cv::VideoCapture cap;
    cap.open(1);
    if(!cap.isOpened())return -1;

    cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

    char srcWindow[] = "srcImage";                                                                                                    
    cvNamedWindow(srcWindow,CV_WINDOW_AUTOSIZE);                            

    cv::Mat srcImage(cv::Size(640,480),CV_8UC3);

    int i=0;
    char cstr0[]="";            //ファイル保存用
    while(1){
        sprintf(cstr0,"src_%d.jpg",i);
        cap >> srcImage;
        cv::imwrite(cstr0,srcImage);
        int key = cv::waitKey(3);
        if(key == 115){
            break;
        }
        usleep(500000);//delay
        i++;
    }
}

試したこと

cap >> srcImageではなく、cap.grab()+cap.retrieve(srcImage)やcap.read(srcImage)もやってみましたが、変わりませんでした。

補足情報(言語/FW/ツール等のバージョンなど)

opencv2.4.5
linux

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • MasahikoHirata

    2017/11/12 18:51

    ”その後のキャプチャでこのバッファをPushしているようで、5フレーム遅れた画像が取得されます。”と有りますがソース上ではその記述が有りませんが。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/11/13 21:16

    whileループで回してキャプチャしているところです。ですので、2回目のcap >> srcImageで5フレーム遅れた画像が取得されています。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    opencvのcvConvertScaleAbs関数エラーを直したい

    こんにちは。 どうしても解決できず、ずっと悩んでいるのでご助力いただけないかと思い投稿しました。 前提・実現したいこと XcodeでC++、opencvを用いて行列操作を

  • 解決済

    opencvでの画像の読み込み

    opencvで画像の読み込みを行い、テンプレートマッチングを行いたいと考えています。 外部のソフト(IC Imaging Contorol)というアルゴ社のカメラソフトを使い

  • 解決済

    動画から静止画切り出し

    動画から静止画の切り出しをしたいと考えています。 しかし、参考になるサイトを探していても見つかりません。 opencvで動画から静止画を切り出すことは不可能なのでしょうか?

  • 解決済

    opencvの動画再生について

    opencvで動画を再生させるときにキー入力によって再生する位置を変えようとしています。コードは以下のようになっています。エラーなく動きますがとても動画の速さが遅くなります。またキ

  • 解決済

    opencv 動画 再生

    #include <stdio.h> #include <cv.h> #include <highgui.h> int main(int argc, char* argv[])

  • 受付中

    カメラで青い円を検出

    #include <stdio.h> #include <stdlib.h> #include <highgui.h> #include <cv.h> #include <cxco

  • 受付中

    OpenCV でincludeエラー

    前提・実現したいこと VisualStudio2017(以下VS2017)で以下のサンプルコードをコンパイルした際にincludeエラーが発生します。そもそもopencv3.0をイ

  • 解決済

    ラベリング処理を行いたい

    前提・実現したいこと こんにちは。 https://youtu.be/CBXrsAJOKhQ こちらのテニスシーンの映像においてラベリング処理をBackgroundSubtract

同じタグがついた質問を見る

  • OpenCV

    824questions

    OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。