c++ - 如何读取用 std::ofstream 保存的 OpenCV 矩阵数据?

标签 c++ opencv

我使用简单的 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/

相关文章:

c++ - 多维数组C++中沿维度的最小值

c++ - 当我在 OpenGL 中启用光照时,为什么我的颜色会消失?

c++ - 访问堆栈变量比取消引用指针慢?

c++ - 通过指针读取多维数组或 vector 是否安全?

c++ - 二进制 '*' : no global operator found which takes type 'statistician' (or there is no acceptable conversion)

image - 如何通过绘制边界框(或多边形)从图像中裁剪多个对象?

c++ - ubuntu 中的 Armadillo 问题

image-processing - 增强现实游戏

c++ - opencv=3.1.0 的背景减法器

python - 如何在Python中实现流水线?