learning opencv 3-8

来源:互联网 发布:返利软件是真是假 编辑:程序博客网 时间:2024/06/11 04:57

这是关于数据的存储,其中的存储函数还没能够完全理解,先记录下来,等后期用到的时候再详细了解


#include<opencv2\opencv.hpp>using namespace cv;using namespace std;typedef struct my_struct{int val;CvPoint point;CvRect rect;};void write_my_struct(CvFileStorage* fs, const char* name, my_struct* ms);void read_my_struct(CvFileStorage* fs, CvFileNode* ms_node, my_struct* ms);int main(){my_struct ms = { 10, cvPoint(5, 10), cvRect(0, 0, 20, 50) };/*ms.val = 10;ms.point.x = 5;ms.point.y = 10;ms.rect.x = 0;ms.rect.y = 0;ms.rect.width = 20;ms.rect.height = 50;  */CvFileNode* ms_node;CvFileStorage* fs = cvOpenFileStorage("cfg.xml", 0, CV_STORAGE_WRITE);write_my_struct(fs, "struct", &ms);cvReleaseFileStorage(&fs);//read_my_struct(fs, ms_node, &ms);return 0;}void write_my_struct(CvFileStorage* fs, const char* name, my_struct* ms){cvWriteInt(fs, name, ms->val);cvStartWriteStruct(fs, name, CV_NODE_SEQ);cvWriteInt(fs, 0, ms->point.x);cvWriteInt(fs, 0, ms->point.y);cvEndWriteStruct(fs);cvStartWriteStruct(fs, name, CV_NODE_SEQ);cvWriteInt(fs, 0, ms->rect.x);cvWriteInt(fs, 0, ms->rect.y);cvWriteInt(fs, 0, ms->rect.width);cvWriteInt(fs, 0, ms->rect.height);cvEndWriteStruct(fs);}void read_my_struct(CvFileStorage* fs, CvFileNode* ms_node, my_struct* ms){int val = cvReadIntByName(fs, 0, "Value", 5);CvSeq* s = cvGetFileNodeByName(fs, ms_node, "Point")->data.seq;int point_x = cvReadInt((CvFileNode*)cvGetSeqElem(s, 0));int point_y = cvReadInt((CvFileNode*)cvGetSeqElem(s, 1));}

0 0
原创粉丝点击