OpenCVでカメラ/ビデオを取り込む

ここではOpenCVを利用してカメラ(USB接続のカメラや,ノートPCに付属のカメラ)から映像をリアルタイムに取り込んで表示することをしてみたいと思います.

凄く簡単なソースなので,とりあえず貼ります.

#include <opencv2/opencv.hpp>

int main() {

    cv::VideoCapture vcap(0);

    cv::Mat frame;

    while (vcap.read(frame)){

        cv::imshow("capture", frame);

        if (cv::waitKey(1) == 'q')break;
    }
    vcap.release();

    return 0;
}

凄く短いです,コメント書くのもってアレですがちゃんと書きました.

#include <opencv2/opencv.hpp>

int main() {

    //ビデオファイルやカメラからキャプチャを行うためのクラス
    //引数の0は,0番目のカメラの意味もしカメラが2台以上あれば1とか2とかにすれば別のデバイスに切り替え
    cv::VideoCapture vcap(0);

    //カメラが取り込んでいるデータから,画像にしてを入れておくための箱を用意
    cv::Mat frame;

    //カメラから画像を取り込み続けられる限り続くwhileループ
    //vcapから画像frameへ1フレームだけ取り込む
    while (vcap.read(frame)){

        //画像を"capture"という名のWindowに表示
        cv::imshow("capture", frame);

        //キーボードでqキーを押したらwhileループ終了
        if (cv::waitKey(1) == 'q')break;
    }
    //vcapをリリース
    vcap.release();

    return 0;
}

以上が,カメラからリアルタイムに取り込む方法でした.

ビデオのファイルから読み込みたい場合は,このソースコードから一行変えるだけです.

cv::VideoCapture vcap("samplevideo.mp4");