file_storage.cpp

Peter Minin, 2013-12-15 09:35 pm

Download (1.4 kB)

 
1
#include "file_storage.h"
2
3
template<> void WriteVariable<cv::Mat>(std::ostream& out, const cv::Mat& mat) {
4
        WriteVariable(out, mat.rows);
5
        WriteVariable(out, mat.cols);
6
        WriteVariable(out, mat.type());
7
        const size_t rowBytes = mat.cols * mat.elemSize();
8
        for (int i = 0; i < mat.rows; i++)
9
                out.write(reinterpret_cast<const char*>(mat.ptr(i, 0)), rowBytes);
10
}
11
12
void ReadMatData(std::istream& in, cv::Mat& mat) {
13
        const size_t rowBytes = mat.cols * mat.elemSize();
14
        for (int i = 0; i < mat.rows; i++)
15
                in.read(reinterpret_cast<char*>(mat.ptr(i, 0)), rowBytes);
16
}
17
18
template<> void ReadVariable<cv::Mat>(std::istream& in, cv::Mat& mat) {
19
        int rows, cols, type;
20
        ReadVariable(in, rows);
21
        ReadVariable(in, cols);
22
        ReadVariable(in, type);
23
        mat.create(rows, cols, type);
24
        ReadMatData(in, mat);
25
}
26
27
template<> void ReadVariable<CvMat*>(std::istream& in, CvMat*& mat) {
28
        int rows, cols, type;
29
        ReadVariable(in, rows);
30
        ReadVariable(in, cols);
31
        ReadVariable(in, type);
32
        mat = cvCreateMat(rows, cols, type);
33
        cv::Mat wrapper = mat;
34
        ReadMatData(in, wrapper);
35
}
36
37
template<> void WriteVariable<cv::PCA>(std::ostream& out, const cv::PCA& pca) {
38
        WriteVariable(out, pca.mean);
39
        WriteVariable(out, pca.eigenvalues);
40
        WriteVariable(out, pca.eigenvectors);
41
}
42
43
template<> void ReadVariable<cv::PCA>(std::istream& in, cv::PCA& pca) {
44
        ReadVariable(in, pca.mean);
45
        ReadVariable(in, pca.eigenvalues);
46
        ReadVariable(in, pca.eigenvectors);
47
}