转换大的XML数据

有什么其他的方式/技巧来将深度图存储在数据库中? 基本上,我们正试图存储300000双值。 如果有帮助,我们可以将数组转换为NSMutableArray或类似的,以便我们可以序列化它。 我不知道如何去做。 我试图find一种方法将其转换为二进制文件而不是ASCII,但没有运气。

通过将原始二进制数据存储在BLOB中,可以节省大量内存。

如果你的matrix没有固定的行和列,你可以在文件的开头放置两行整数。

我将添加一个关于如何保存和加载matrix数据的简单示例,前面是行和列。

#include <opencv2/opencv.hpp> #include <fstream> using namespace cv; using namespace std; int main() { Mat1d m = (Mat1d(3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9); Mat1d n; { ofstream ofs("test.bin", fstream::binary); ofs.write((char*)&m.rows, sizeof(int)); // Save rows ofs.write((char*)&m.cols, sizeof(int)); // Save cols ofs.write((char*)m.data, m.total()*sizeof(double)); // Save data } { ifstream ifs("test.bin", fstream::binary); int rows, cols; ifs.read((char*)&rows, sizeof(int)); // Load rows ifs.read((char*)&cols, sizeof(int)); // Load cols n = Mat1d(rows, cols); // Resize the matrix according to rows, cols ifs.read((char*)n.data, rows*cols*sizeof(double)); // Load data } // Now m and n are equal return 0; } 

如果您需要进一步压缩,您可以使用gzstream读取和写入stream