15namespace fs = std::filesystem;
23std::string to_lower(std::string s) {
24 std::transform(s.begin(), s.end(), s.begin(),
25 [](
unsigned char c) { return static_cast<char>(std::tolower(c)); });
30bool has_image_extension(
const std::string& lower_name) {
31 static const char* kExts[] = {
".png",
".jpg",
".jpeg",
".bmp",
".tif",
".tiff"};
32 for (
const char* ext : kExts) {
33 const std::string e(ext);
34 if (lower_name.size() > e.size() &&
35 lower_name.compare(lower_name.size() - e.size(), e.size(), e) == 0) {
47 std::vector<std::string> frames;
50 if (!fs::is_directory(folder_, ec)) {
54 for (
const auto& entry : fs::directory_iterator(folder_, ec)) {
56 if (!entry.is_regular_file())
continue;
58 const std::string name = entry.path().filename().string();
59 if (name.empty() || name[0] ==
'.')
continue;
61 const std::string lower = to_lower(name);
62 if (!has_image_extension(lower))
continue;
64 if (skip_roi_ref && (lower ==
"roi.png" || lower ==
"ref.png"))
continue;
66 frames.push_back(entry.path().string());
70 std::sort(frames.begin(), frames.end());
Image-folder input reader (Section 3b) - STUB.
DataSerializer - Abstract base class for format-agnostic DIC data I/O.