OpenCV - загрузить новейшее изображение из папки

Я хочу разработать PhotoBooth и для этого я хочу отобразить последнее изображение, которое я сделал с OpenCV на C++, на Raspberry Pi. Поэтому, когда новая фотография находится в исходной папке, эта фотография должна быть загружена. Как я могу загрузить самую новую фотографию?

Мой код до сих пор. Я загружаю определенное изображение с именем "1.bmp", но я хочу загрузить с неспецифическим именем:

int main() 
{
    Mat image;
    image = imread("1.bmp");

    namedWindow( "Display", WINDOW_AUTOSIZE );
    imshow( "Display", image ); 

    waitKey(0); 
    return 0;
}

Спасибо за ваши ответы.

1 ответ

Решение

Я не программист C++, но это должно дать вам довольно хорошее представление о том, как это сделать:

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>

int main()
{
   struct dirent *drnt;
   struct stat stbuf;
   DIR *dr;

   // Open the current directory 
   dr=opendir(".");
   long long newest=0;
   std::string name;

   // Iterate through directory entries 
   while (drnt=readdir(dr)){

      // stat the entry to get its type and age
      stat(drnt->d_name,&stbuf);

      // Check files only - not directories. You may want to do a strcmp() against "BMP" or "bmp" here
      if(S_ISREG(stbuf.st_mode)){
         long long ns=stbuf.st_mtimespec.tv_sec * 1000000000 + stbuf.st_mtimespec.tv_nsec;
         std::cout << drnt->d_name << ": " << ns << std::endl;

         // Note this puppy if newer than current newest
         if(ns>newest){
            newest=ns;
            name=drnt->d_name;
         }
      }
   }
   closedir(dr);

   // Output name of newest
   std::cout << name << std::endl;
}
Другие вопросы по тегам