http://qiita.com/episteme/items/0e3c2ee8a8c03780f01e
と
http://nonbiri-tereka.hatenablog.com/en ... /15/094559
で得た サンプルコードを繋いでみました。
ところが
string a = p.filename(); でエラーが発生します。
エラーメッセージを読むと
"std::experimental::filesystem::v1::path" から "std::string" へ変換ができないそうなのですが
検索しても上手く解決策が見つかりません。
どう変換したらいいのか、あるいはどのように修正したらいいのかを
お教え頂けたら幸いです。
どうぞよろしくお願いいたします。
#include <iostream>
#include <algorithm>
#include <filesystem>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
//http://qiita.com/episteme/items/0e3c2ee8a8c03780f01e
int main()
{
namespace sys = std::tr2::sys;
sys::path p("."); // 列挙の起点
std::for_each(sys::directory_iterator(p), sys::directory_iterator(),
// 再帰的に走査するならコチラ↓
// std::for_each(sys::recursive_directory_iterator(p), sys::recursive_directory_iterator(),
[](const sys::path& p) {
if (sys::is_regular_file(p)) { // ファイルなら...
//http://nonbiri-tereka.hatenablog.com/entry/2014/04/15/094559
string a = p.filename();
cout << "file: " << p.filename() << endl;
//動画の読み込み
VideoCapture video(a);
//動画を再生する。
namedWindow("hoge");
while (1) {
Mat frame;
video >> frame;
//フレームが空か、ボタンが押された時か一周したときに出る。
if (frame.empty() || waitKey(30) >= 0 || video.get(CV_CAP_PROP_POS_AVI_RATIO) == 1) {
break;
}
imshow("hoge", frame);
}
}
else if (sys::is_directory(p)) { // ディレクトリなら...
cout << "dir.: " << p.string() << endl;
}
});
cv::destroyAllWindows();
return 0;
}