2種類のMatを出力するプログラム
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat matA = (cv::Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
Mat matB = cv::Mat::ones(5, 5, CV_8U)*3;
FileStorage cvfs("D:/test.xml", CV_STORAGE_WRITE);
write(cvfs,"matA", matA);
write(cvfs,"matB", matB);
}出力されたxmlファイルの中身.
<?xml version="1.0"?> <opencv_storage> <matA type_id="opencv-matrix"> <rows>3</rows> <cols>3</cols> <dt>d</dt> <data> 1. 0. 0. 0. 1. 0. 0. 0. 1.</data></matA> <matB type_id="opencv-matrix"> <rows>5</rows> <cols>5</cols> <dt>u</dt> <data> 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3</data></matB> </opencv_storage>
読み込む方のプログラム
int main()
{
Mat ma, mb;
FileStorage cvfs("D:/test.xml", CV_STORAGE_READ);
FileNode node(cvfs.fs, NULL);
read(node["matB"], mb);
read(node["matA"], ma);
std::cout << ma << std::endl;
std::cout << mb << std::endl;
}
0 件のコメント:
コメントを投稿