#python code
import cv2
import numpy as np
# 파일 이름 설정
filename = "mydata.json"
def writeData():
name = "Jane"
age = 10
pt1 = (100, 200)
scores =np.array([80, 90, 50], dtype=np.int32)
mat1 = np.array([[1.0, 1.5], [2.0, 3.2]], dtype=np.float32)
fs = cv2.FileStorage(filename, cv2.FileStorage_WRITE)
if not fs.isOpened():
print("File open failed!")
return
fs.write("name", name)
fs.write("age", age)
fs.write("point", pt1)
fs.write("scores", scores)
fs.write("data", mat1)
fs.release()
def readData():
fs = cv2.FileStorage(filename, cv2.FileStorage_READ)
if not fs.isOpened():
print("File open failed!")
return
name = fs.getNode("name").string()
age = int(fs.getNode("age").real())
pt1 = tuple(fs.getNode("point").mat().astype(int).flatten())
scores = fs.getNode("scores").mat().astype(int).flatten().tolist()
mat1 = fs.getNode("data").mat()
fs.release()
print(f"name: {name}")
print(f"age: {age}")
print(f"point: {pt1}")
print(f"scores: {scores}")
print(f"data:\n{mat1}")
def main():
writeData()
readData()
if __name__ == "__main__":
main()
// C++ code
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
void writeData();
void readData();
// String filename = "mydata.xml";
// String filename = "mydata.yml";
String filename = "mydata.json";
int main(void)
{
writeData();
readData();
return 0;
}
void writeData()
{
String name = "Jane";
int age = 10;
Point pt1(100, 200);
vector<int> scores = { 80, 90, 50 };
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();
}
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;
cout << "data:\n" << mat1 << endl;
}
C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저
name: Jane
age: 10
point: (100, 200)
scores: [80, 90, 50]
data:
[[1. 1.5]
[2. 3.2]]
'OpenCV' 카테고리의 다른 글
ch04 trackbar (0) | 2024.05.19 |
---|---|
ch04 trackbar (0) | 2024.05.19 |
ch04 mouse (0) | 2024.05.19 |
ch04 keyboard (0) | 2024.05.19 |
ch04 drawing (0) | 2024.05.19 |