【发布时间】:2014-02-25 16:40:30
【问题描述】:
我将 cv::Mat 保存为工作正常的 CSV 文件,但是当我去加载它并将其转换回 cv::Mat 时,某些东西被损坏了。当我打印出 cv::Mat 的内容时,它们与 csv 文件的内容不同。当我显示 Mat 对象时,我会看到一个宽阔的白色窗口。
cv::imwrite("cameraFrame1.jpg", frame);
outFile.open("cameraFrame1.csv");
outFile << cv::format(frame, "CSV") << std::endl;
outFile.close();
...
CvMLData mlData;
mlData.read_csv("cameraFrame1.csv");
const CvMat* tmp = mlData.get_values();
cv::Mat img(tmp, true);
tmp->CvMat::~CvMat();
std::cout << "img: " << img << std::endl;
cv::namedWindow("img");
cv::imshow("img", img);
cv::waitKey(0);
编辑:
我完全不喜欢这种方法,如果有更好的方法可以将图像保存到 CSV 然后读入,我会很乐意这样做。这样做的目的是将图像保存为原始数据,很可能保存在数据库中,然后可以在 matlab、python、c++ 等中再次打开。
【问题讨论】:
-
为什么不使用 imwrite() 将其保存为 png 文件?这是无损压缩的,几乎可以在任何地方读回(Matlab、Python、libpng ...)。它甚至可以存储在数据库中。