10#include <opencv2/core.hpp>
56 void operator()(mat_t* f)
const noexcept {
if (f) Mat_Close(f); }
59 void operator()(matvar_t* v)
const noexcept {
if (v) Mat_VarFree(v); }
62 using MatFilePtr = std::unique_ptr<mat_t, MatFileDeleter>;
63 using MatVarPtr = std::unique_ptr<matvar_t, MatVarDeleter>;
86 const std::string& struct_name,
87 const std::string& field_name);
96 static matvar_t*
readNestedField(mat_t* matfp,
const std::string& path);
114 static std::vector<double>
readDouble2DArray(matvar_t* var,
size_t& rows,
size_t& cols);
163 static std::map<std::string, double>
readDispInfo(mat_t* matfp);
172 static bool variableExists(mat_t* matfp,
const std::string& var_name);
181 static cv::Mat
readROIMask(
const std::string& mat_path,
182 const std::string& var_name =
"refmask");
215 static matvar_t* getStructField(matvar_t* s,
const char* field,
size_t index = 0) noexcept;
216 static
bool readDIC2DPairResultsFromStruct(matvar_t* dic2d_root,
219 static
bool readTopInt(mat_t* matfp, const
char* name,
int& out) noexcept;
220 static
bool readTopDouble(mat_t* matfp, const
char* name,
double& out) noexcept;
221 static
bool readTopString(mat_t* matfp, const
char* name, std::
string& out);
223 static
bool readStructInt(matvar_t* s, const
char* field,
int& out,
size_t index = 0) noexcept;
224 static
bool readStructDouble(matvar_t* s, const
char* field,
double& out,
size_t index = 0) noexcept;
225 static
bool readStructBool(matvar_t* s, const
char* field,
bool& out,
size_t index = 0) noexcept;
226 static
bool readStructString(matvar_t* s, const
char* field, std::
string& out,
size_t index = 0);
MatReader class Provides utilities for reading MAT files.
static bool loadDLTCalibration(const std::string &mat_path, DLTCalibrationData &calib)
static matvar_t * readStructField(mat_t *matfp, const std::string &struct_name, const std::string &field_name)
Read a specific field from a struct variable.
std::unique_ptr< matvar_t, MatVarDeleter > MatVarPtr
static cv::Mat readImage(matvar_t *var)
Read image from matvar.
static matvar_t * getCellElement(matvar_t *var, size_t index)
Get cell from cell array.
static bool variableExists(mat_t *matfp, const std::string &var_name)
Check if variable exists in MAT file.
static std::vector< double > readDoubleArray(matvar_t *var)
Read double array from matvar.
static MatVarPtr readVar(mat_t *matfp, const std::string &name)
static cv::Mat readROIMask(const std::string &mat_path, const std::string &var_name="refmask")
Read ROI mask from MAT file.
static std::vector< double > readDouble2DArray(matvar_t *var, size_t &rows, size_t &cols)
Read 2D double array from matvar.
static bool readDIC2DPairResults(const std::string &mat_path, struct DIC2DPairResults &result)
Read DIC2DPairResults structure from MAT file Loads myDIC2DpairResults_C_X_C_Y.mat files.
static bool readDIC3Dcombined(const std::string &mat_path, struct DIC3Dcombined &combined)
Read DIC3Dcombined structure from MAT file.
static std::string readString(matvar_t *var)
Read string from matvar.
static std::vector< int > readIntArray(matvar_t *var)
Read int array from matvar.
static matvar_t * readNestedField(mat_t *matfp, const std::string &path)
Read a nested struct field (e.g., "data_dic_save.dispinfo.radius")
static double readScalar(matvar_t *var)
Read scalar from matvar.
static std::vector< std::string > readCellStrings(matvar_t *cell_var)
static MatVarPtr readFirstVar(mat_t *matfp)
static std::map< std::string, double > readDispInfo(mat_t *matfp)
Read dispinfo parameters from MAT file.
static MatFilePtr openMat(const std::string &path)
std::unique_ptr< mat_t, MatFileDeleter > MatFilePtr
static bool loadProtocol(const std::string &protocol_path, ProtocolFileData &protocol)
static size_t getCellArraySize(matvar_t *var)
Get cell array size.
DataSerializer - Abstract base class for format-agnostic DIC data I/O.
DIC 2D Pair Results Equivalent to MATLAB's DIC2DpairResults.
DIC 3D Combined Results Equivalent to MATLAB's DIC3Dcombined This represents stitched results from mu...
std::vector< double > imageCentroids
std::vector< uint8_t > columns
size_t imageCentroids_rows
std::vector< double > C3Dtrue
std::vector< double > DLTparams
void operator()(mat_t *f) const noexcept
void operator()(matvar_t *v) const noexcept
std::vector< TrialEntry > trials
std::vector< std::string > titles