0

私は現在プロジェクトに取り組んでおり、現在、ビデオから連続するフレームを取り出して、それらの機能を見つけて一致させる必要があります。問題は、 VideoCapture::read(Mat &image) を呼び出すと、同じ画像と比較したい両方の画像が上書きされることです。同じバッファが使用されているため、両方の値が同じスペースを指している可能性があると思います。これを回避する方法がわかりません。

問題のコードは次のとおりです: (貧弱な例外処理については心配しないでください)

    Mat m1, m2;
VideoCapture cap(argv[1]);
if(!cap.isOpened()){
    throw std::exception("Could not open the file");
}
int num = 0;

while(num < 20){
    try{
    cap.read(m1);
    cap.read(m2);

    num++;  
    match(m1,m2,num);

    }catch(std::exception){
        std::cout << "Oh no!";
    }
}

match(m1,m2,num) は特徴検出ビジネスを行い、画像 "Image_%d.jpg" を出力します。この画像は、両方の画像を並べて表示したものです。ただし、この画像は同じ画像が 2 回連続しています。静止画像でテストしたため、 match() は機能します。そのため、問題は cap.read コードにあると確信しています。どんな助け/提案も大歓迎です。

4

1 に答える 1