728x90
FileStorage 클래스 : 데이터 파일 입출력을 담당하는 클래스
open() 함수 : 실제 사용할 파일을 여는 함수
virtual bool open(const String& filename, int flags, const String& encoding = String());
//filename -> 파일이름
//flags -> 파일 열기 모드
//encoding -> 파일 인코딩 방식
파일 열기 모드 열거형 상수
FileStorage::READ | 읽기 모드 |
FileStorage::WRITE | 쓰기 모드 ( 새로 생성 ) |
FileStorage::APPEND | 추가로 쓰기 모드 |
FileStorage::MEMORY | 논리합 연산자를 이용하여 READ나 WRITE 상수와 함께 사용될 경우, 실제 차일 입출력 대신 메모리 버퍼를 이용한 입출력을 수행 |
isOpened() 함수 : 파일이 정상적으로 열렸는지 확인하는 함수
release() 함수 : 사용하고 있던 파일을 닫고 메모리 버퍼를 해제하는 함수
void writeData()
{
//파일에 저장할 데이터 변수 선언
String name = "Zen";
int age = 22;
Point pt1(300, 400);
vector<int> scores = { 12, 34, 56 };
Mat mat1 = (Mat_<float>(2, 2) << 1.0f, 1.5f, 2.0f, 3.2f);
FileStorage fs;
fs.open(filename, FileStorage::WRITE); //객체 쓰기 모드로 생성
if (!fs.isOpened()) {
cerr << "File open failed!" << endl;
return;
}
//데이터 파일에 저장
fs << "name" << name;
fs << "age" << age;
fs << "point" << pt1;
fs << "scores" << scores;
fs << "data" << mat1;
//데이터 저장이 끝나면 파일을 닫는다
fs.release();
}
코드가 실행되면 프로그램 실행 폴더에 mydata.json 파일이 생성되고, 생성된 파일에는 각각의 데이터가 저장되어 있다
차례대로 JSON, XML, YML 으로 저장한 데이터이다
쓰여진 데이터를 읽기 위해서는 READ 모드를 사용한다
void readData()
{
//파일에 저장할 데이터 변수 선언
String name;
int age;
Point pt1;
vector<int> scores;
Mat mat1;
FileStorage fs(filename, FileStorage::READ); //객체 읽기 모드로 생성
if (!fs.isOpened()) {
cerr << "File open failed!" << endl;
return;
}
//데이터를 읽음
fs["name"] >> name;
fs["age"] >> age;
fs["point"] >> pt1;
fs["scores"] >> scores;
fs["data"] >> mat1;
fs.release();
cout << "name: " << name << endl;
cout << "age: " << age << endl;
cout << "point: " << pt1 << endl;
cout << "scores: " << Mat(scores).t() << endl; //t()함수는 저장된 값을 간단하게 출력하기 위해 사용되는 코드
cout << "data:\n" << mat1 << endl;
}
728x90
'런닝머신 (ML)' 카테고리의 다른 글
[컴퓨터 비전 & 머신러닝] 영상의 밝기 조절 (0) | 2023.04.06 |
---|---|
[컴퓨터 비전 & 머신러닝] 유용한 OpenCV 기능 (0) | 2023.04.05 |
[컴퓨터 비전 & 머신러닝] 이벤트 처리 (0) | 2023.03.27 |
[컴퓨터 비전 & 머신러닝] 함수 그리기 (0) | 2023.03.27 |
[컴퓨터 비전 & 머신러닝] 카메라와 동영상 파일 다루기 (0) | 2023.03.23 |