Прочитайте последовательность изображений в openCV

0

У меня возникла проблема с чтением последовательности изображений в opencv. Я использую тот же код:

namedWindow("Source", CV_WINDOW_AUTOSIZE);
string pathToData("OpenCV Images/checkerboard1.pgm");

VideoCapture sequence(pathToData);

Mat src;
for (;;)
{   
    sequence >> src;
    if(src.empty())
    {
        cout << "End of Sequence" << endl;
        break;
    }
    imshow("Source", src);
    waitKey(1000);
}
waitKey(0);

Я запускаю этот код в окне (visual studio) и в linux. В окне программа показывает все изображения в последовательности, в то время как в Linux, прогама только показывает первое изображение в той же последовательности. Кроме того, в окне программа загружает изображения в оттенках серого, а в lunix загружает изображения в цвет. Фактически, я сохраняю изображение как оттенки серого.

Это проблема с openCV для ОС Windows и Linux? Или мне нужно сделать некоторые настройки? Или что-то еще... Может ли кто-нибудь помочь мне понять это? Спасибо!

  • 1
    afaik, этот трюк VideoCapture нуждается в правильной строке формата, такой как: string pathToData("OpenCV Images/checkerboard%d.pgm");
  • 0
    замечательно. Это очень полезный трюк. Большое спасибо!
Теги:
opencv
image-processing

1 ответ

0

pathToData содержит имя файла вместо пути. Этот файл находится в формате .pgm, что означает, что изображение имеет шкалу серого.

На мой взгляд, вам нужно будет создать список имен изображений, присутствующих в папке, и вызывать их по одному позже. В текущем коде будет отображаться только изображение checkerboard1.pgm. Или вы должны предоставить видеофайл в качестве входных данных вместо изображения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню