2017-03-25 14 views
0

私はPhotoBoothを開発したいと思います。このためにOpenCVで作成した最後の画像をC++でRaspberry Piに表示します。新しい写真がソースフォルダにある場合は、この写真を読み込む必要があります。最新の写真はどのように読み込むことができますか?OpenCV - フォルダから最新のイメージをロードする

今までのコード。私は「1.bmp」という名前の特定の画像をロードしますが、私は、非特異的な名前でロードしたい:あなたの答えのための

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

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

    waitKey(0); 
    return 0; 
} 

感謝。

+1

を?この質問は少し広すぎるように見えますが、 "最後の写真は"また "ソースフォルダ"の最新写真ですか?ソースフォルダはどこですか?それはローカルですか、ネットワーク共有ですか?あなたは何らかのフォルダウォッチングを実装したいのですか、これはただ一度実行して、最新のファイルを取得して表示するものですか?あなたの質問の範囲を狭めるか、特定の問題を記述してください。 – pstrjds

+0

あなたの答えをありがとう。最新の写真をローカルフォルダにロードする方法はわかりません(カメラはPCに接続されており、画像を保存しています)。カメラで最後に作成された画像は、自動的に元のフォルダ内の最新の画像になります。新しい写真がカメラで作成されるたびに、これは表示する必要があります。今私の質問は理解することをお勧めします。 – Michael

+0

ファイルのタイムスタンプを見たことがありますか? 'stat'と' fstat'関数は 'opendir'と' readdir'だけでなく、気にしています。 –

答えて

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

コードのありがとう。今それは動作し、私は最新の画像を表示することができます:) – Michael

+0

あなたのプロジェクトで涼しい - 幸運! –

関連する問題