趣味は車輪の再発明♪

[opencv] cv::VideoCapture - ビデオキャプチャクラス (highgui)


詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski Adrian Kaehler
オライリージャパン
売り上げランキング: 25,746


■ たかみんつ / ソフト開発メモINDEX / OpenCVリファレンス(じぶん用) / クラスリファレンス /


カメラ、動画ファイルなどをキャプチャするためにVideoCaptureクラスを使用します。

キャプチャ対象を開く

コンストラクタ、またはopenメソッドで、キャプチャ対象を指定する。 WEBカメラなどのキャプチャデバイスなら、デバイス番号(int型)だし、動画ファイルなら、ローカルファイル名やURL。 そう、URLを指定したらちゃんとダウンロードして再生できる。

//0番目のキャプチャデバイス(PC内蔵のWEBカメラなど)を開きます。
cv::VideoCapture cap(0);

//httpで公開されている動画ファイルを開きます。
cap.open("http://***.***.com/xxxxx.avi");

キャプチャの実行

cv::Matのインスタンスに対して、入力ストリーム演算子(>>)を使用してキャプチャします(以下例)。

cv::Mat mat; 
cv::VideoCapture cap(0);
cap >> mat;//キャプチャの実行

サンプルプログラム

以下は、コマンドライン引数でキャプチャ対象を指定するサンプルプログラムです(ビルド環境はVS2010Express)。 動画ならファイル名やURL。 キャプチャデバイスを指定する場合は'#'の後にデバイス番号。省略時はデバイス番号0を開きます。

#include "stdafx.h"
#include <windows.h>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

//文字列を数値に変換
template<class T> void operator >> (const std::string& src, T& dst) {
    std::istringstream iss(src);
    iss >> dst;
}
int _tmain(int argc, _TCHAR* argv[])
{
    cvInitSystem(argc, argv);
    cvNamedWindow("cv::VideoCapture", CV_WINDOW_AUTOSIZE);
    
    string deviceName("#0");
    if(argc > 1) {
        deviceName = argv[1];
    }

    VideoCapture cap;
    bool open = false;
    if(deviceName.at(0) != '#') {
        //動画ファイルをオープン
        open = cap.open(deviceName);
    } else {
        int deviceNo;
        deviceName.substr(1) >> deviceNo;
        //キャプチャデバイスをオープン
        open = cap.open(deviceNo);
    }
    if(!open) {
        std::cerr << deviceName << "のopenに失敗。" << endl;
        exit(-1);
    }

    Mat frame;
    while(true) {
        cap >> frame;//キャプチャの実行
        imshow("cv::VideoCapture", frame);
        if (cvWaitKey(1) == '\x1b') {//ESC
            break;
        }
    }
}

Pythonプロフェッショナルプログラミング 第2版
秀和システム (2015-05-21)
売り上げランキング: 1,813


クラウドではじめる機械学習 Azure MLでらくらく体験
脇森浩志 杉山雅和 羽生貴史
リックテレコム
売り上げランキング: 2,081

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 40,213

■ たかみんつ / ソフト開発メモINDEX / OpenCVリファレンス(じぶん用) / クラスリファレンス /



RSS Feed Widget
[opencv] cv::VideoCapture - ビデオキャプチャクラス (highgui)
(http://bicycle.life.coocan.jp/takamints/index.php/doc/opencv/class/VideoCapture)
by Koji Takami ( email: vzg03566@gmail.com, GitHub: takamin )