OpenCV에서 제공하는 기능 중 FileStorage라는 놈을 이용하여 xml을 읽고 쓰기가 가능하다.
대부분의 기능은 iostream과 유사한 형태로 사용 가능해서 바로 쓸 수 있지만 두가지 기능은 알아야 한다.
1. Sequence Collection ( "[", "]" )
이 놈은 데이터를 리스트 형태로 관리해 주는 놈으로써 [ ] 를 이용하여 출력한다.
2. Mapping Collection ( "{", "}" )
이 놈은 계층을 관리 해 주는 놈으로써 { } 를 이용하여 출력한다.
이 두 기능도 직관적이라 사용이 어렵진 않다.
샘플 코드
FileStorage fs("_sample.xml", FileStorage::WRITE);
time_t date;
time(&date);
fs << "Date" << asctime(localtime(&date));
fs << "ID" << "USER ID";
fs << "Originfilelist" << "[";
fs << "F:/test_video/kinect1/originvideo.mkv";
fs << "F:/test_video/kinect2/originvideo.mkv";
fs << "F:/test_video/kinect3/originvideo.mkv";
fs << "]";
fs << "Sample" << "{";
fs << "Sourcefile" << "F:/test_video/kinect1/originvideo.mkv";
fs << "Filename" << "2_1-r.mkv";
fs << "FilePath" << "F:/test_video/parsing/kinect1/2_1-r.mkv";
fs << "OriginTime" << "00:33:39-00:33:46";
fs << "Memo" << " ";
fs << "Function" << "{";
fs << "Name" << "Function1";
fs << "score" << "N" << "}";
fs << "Function" << "{";
fs << "Name" << "Function2";
fs << "score" << "N";
fs << "}";
fs << "}";
xml 결과
<?xml version="1.0"?>
<opencv_storage>
<Date>"Wed Oct 7 10:01:54 2020
"</Date>
<ID>"USER ID"</ID>
<Originfilelist>
F:/test_video/kinect1/originvideo.mkv
F:/test_video/kinect2/originvideo.mkv
F:/test_video/kinect3/originvideo.mkv</Originfilelist>
<Sample>
<Sourcefile>F:/test_video/kinect1/originvideo.mkv</Sourcefile>
<Filename>"2_1-r.mkv"</Filename>
<FilePath>F:/test_video/parsing/kinect1/2_1-r.mkv</FilePath>
<OriginTime>"00:33:39-00:33:46"</OriginTime>
<Memo>" "</Memo>
<Function>
<Name>Function1</Name>
<score>N</score></Function>
<Function>
<Name>Function2</Name>
<score>N</score></Function></Sample>
</opencv_storage>
(20.11.26. 수정) 위 샘플은 xml 작성규칙에 맞지 않음.
동일 이름의 노드 생성은 규칙에 어긋나기 때문에 위와 같이 생성은 되지만
filestorage를 이용하여 다시 읽을때 문제가 발생한다.
동일이름의 노드 생성은 하지 않도록 하자.
'Programming > OpenCV' 카테고리의 다른 글
폰트 변경이 가능한 putText를 사용하자 (0) | 2021.04.29 |
---|---|
jpeg 파일 디코딩하기. (0) | 2015.11.11 |
unsigned char* 형 버퍼를 IplImage 또는 Mat 으로 변환하기. (0) | 2014.08.18 |
[Function] HoG Destriptor in OpenCV (0) | 2014.01.27 |
[Function] 영상을 회전 시키기 (0) | 2014.01.23 |