У меня возникла проблема с чтением последовательности изображений в 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? Или мне нужно сделать некоторые настройки? Или что-то еще... Может ли кто-нибудь помочь мне понять это? Спасибо!
pathToData
содержит имя файла вместо пути. Этот файл находится в формате .pgm
, что означает, что изображение имеет шкалу серого.
На мой взгляд, вам нужно будет создать список имен изображений, присутствующих в папке, и вызывать их по одному позже. В текущем коде будет отображаться только изображение checkerboard1.pgm
. Или вы должны предоставить видеофайл в качестве входных данных вместо изображения.
string pathToData("OpenCV Images/checkerboard%d.pgm");