1

openCV を使用して、任意のフォルダーから一連のフレームを読み取りたいです。すべてのフレームは順番に並んでいます (1).jpg,(2).jpg,....

VideoCapture cap;
cap.open("Directory/");
for(;;)
    {
        Mat frame;
        cap >> frame;
    }

しかし、うまくいきません。この質問は以前に尋ねられましたが、この回答がうまくいかない理由がわかりません。

OpenCV: フォルダーから画像シリーズを読み取る

画像の名前を変更する必要がありますか?

4

3 に答える 3

1

cap open である必要があり、固定長になるように、などcap.open("Directory/(%02d).jpg");のように画像の名前を変更する必要があります。画像が似ている場合は、使用する必要があります(01).jpg(02).jpg(001).jpg`cap.open("Directory/(%03d).jpg");

編集

#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
    VideoCapture cap;
    cap.open("imgs/(%02d).jpg");
    int i=0;
    for(;;)
    {
        if(i++%37==0)cap=VideoCapture("imgs/(%02d).jpg");//there are 37 frames in the dir
        Mat frame;
        cap >> frame;
        imshow("frame",frame);
        if(waitKey(1)==27)
            exit(0);
    }
    return 0;
}
于 2013-10-10T13:49:50.387 に答える