OpenCV - 从文件夹加载最新图像

时间:2017-03-25 14:59:32

标签: c++ image opencv imread

我想开发一个PhotoBooth,为此,我想在Raspberry Pi上显示我用C ++中的OpenCV制作的最后一张图片。因此,当新照片位于源文件夹中时,必须加载此照片。如何加载最新照片?

我的代码到现在为止。我加载了一个名为“1.bmp”的特定图像,但我想加载一个非特定的名称:

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

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

    waitKey(0); 
    return 0;
}

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

我不是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;
}