1

cv::VideoCapture を使用して約 50 のビデオ フレームを読み取り、これらの 50 の画像を 1 つずつ呼び出して他の作業を行いたいと考えています。これを行うために、サイズ変更などの方法を使用してみましたが、それでも解決できませんでした。たとえば、次のようなビデオから画像を取得します。

cv::VideoCapture myCapture(0);
while(true)
{
    cv::Mat inputFrame;
    myCapture>>inputFrame;
}

最初の 50 を保存し、inputFrame後でそれらを 1 つずつ呼び出して、他の作業を行いたいと考えています。最初に現在のフレームを処理してから次のフレームを読み取ることは、私がやりたいことではありません。また、最初にハードディスクに書き込んでから読みたくありません。画像マトリックスを含む一種のセルが必要です。解決策はありますか?

4

1 に答える 1

4

これを試して:

#include <vector>

std::vector<cv::Mat> frames;
cv::Mat inputFrame;

for(int i=0; i<50; i++){
    myCapture>>inputFrame;
    frames.push_back(inputFrame);
}

ベクトルframesを画像で塗りつぶします。その後、必要に応じてそれらにアクセスできます。push_backこれのわずかな変形は、メソッドを使用するのではなく、このベクトルをインスタンス化し、連続するエントリを上書きすることです。

#include <vector>

std::vector<cv::Mat> frames;
frames.resize(50);
cv::Mat inputFrame;

for(size_t i=0; i<frames.size(); i++){
    myCapture>>inputFrame;
    frames[i] = inputFrame;
}
于 2013-09-22T12:25:59.503 に答える