简体   繁体   中英

Displaying Images from file using OpenCV VideoCapture, and C++ vectors

I am reading in an image sequence from a file using an OpenCV VidoeCapture - I believe I am doing this part correctly - and then putting them in a c++ vector, for processing at a later point. To test this, I wrote the following that would read in images, put them in a vector, and then display those images from the vector one by one. However, when I run this, no images appear. What's wrong?

I am using a raspberry pi, I don't know if that makes any difference.

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <vector>
#include <iostream>

using namespace cv;
using namespace std;


vector<Mat> imageQueue;


int main(int argc, char** argv)
{
  string arg = ("/home/pi/pictures/ceilingSequence/%02d.jpg");
  VidoeCapture sequence(arg);

  if(!sequence.isOpened()) {
    cout << "Failed to open image sequence" << endl;
    return -1;
  }

  Mat image;
  for(;;)
  {
    sequence >> image;
    if(image.empty()) {
       cout << "End of sequence" << endl;
       break;
    }
    imageQueue.push_back(image);
  }

  for(int i = 0; i < 10; i++)
  {
    //display 10 images
    Mat readImage;
    readImage = imageQueue[i];
    namedWindow("Current Image", CV_WINDOW_AUTOSIZE);
    imshow("Current Image", readImage);
    sleep(2);
  }


return 0;
}

please replace the sleep(2) with a waitKey(2000). // assuming you want to wait for 2 seconds

even if you're not interested in keypresses in general, it is needed to update the opencv / highgui graphics loop correctly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM