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;
}