我使用简单的 std::ofstream 在 OpenCV 中保存了一个大矩阵,如下所示:
Mat someData;
std::ofstream fout("someFile");
fout << someData;
它将整个矩阵存储在一个文件中,以,
作为列分隔符,;
作为行分隔符。
是否可以将这些数据再次提取回 OpenCV 矩阵?如何?尝试使用 std::ifstream
进行相反操作会引发“无法绑定(bind)”错误。
速度/效率/优雅不是问题。
最佳答案
可以从您编写的文件中加载它。您可以先将整个文件加载到一个长的 string
中。然后关注这个话题 How to split a string in C++?首先根据;
拆分整个string
,即每一个代表一行。之后再根据,
拆分。
PS:如果在 I/O 矩阵中使用 cv::FileStorage
会容易得多:
// write:
cv::Mat m = ...;
cv::FileStorage fs("myfile.txt", cv::FileStorage::WRITE);
fs << "mat" << m;
fs.release();
// read:
cv::Mat m2;
cv::FileStorage fs2("myfile.txt", cv::FileStorage::READ);
fs2["mat"] >> m2;
fs2.release();
关于c++ - 如何读取用 std::ofstream 保存的 OpenCV 矩阵数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052802/