• Opencv step by step



    有时候,我们需要用配置文件存储一些图像或者视频的信息。


    先来一个简单的例子:

    #include <cv.h>
    #include <highgui.h>
    
    int main(int argc,char **argv)
    {
    	CvFileStorage *fs = cvOpenFileStorage("cfg.xml", 0, CV_STORAGE_WRITE);
    	cvWriteInt(fs, "frame_count", 10);
    	cvReleaseFileStorage(&fs);
    
    }

    结果是生成一个cfg.xml,下面是它的内容:

    <?xml version="1.0"?>
    <opencv_storage>
    <frame_count>10</frame_count>
    </opencv_storage>

    这里不仅仅可以写一些简单数据,还可以写好几层的数据:


    #include <cv.h>
    #include <highgui.h>
    
    int main(int argc,char **argv)
    {
    	CvFileStorage *fs = cvOpenFileStorage("cfg.xml", 0, CV_STORAGE_WRITE);
    	cvWriteInt(fs, "frame_count", 10);
    
    
    	cvStartWriteStruct(fs, "frame_size", CV_NODE_MAP);
    		cvStartWriteStruct(fs, "frame_detail", CV_NODE_MAP);
    			cvWriteInt(fs, "K", 33);
    			cvWriteInt(fs, "FF", 87);
    		cvEndWriteStruct(fs);
    		cvWriteInt(fs, "x", 320);
    		cvWriteInt(fs, "Y", 240);
    	cvEndWriteStruct(fs);
    
    
    	cvReleaseFileStorage(&fs);
    
    }

    效果是:

    <?xml version="1.0"?>
    <opencv_storage>
    <frame_count>10</frame_count>
    <frame_size>
      <frame_detail>
        <K>33</K>
        <FF>87</FF></frame_detail>
      <x>320</x>
      <Y>240</Y></frame_size>
    </opencv_storage>


    这里要注意了,这里使用了CV_NODE_MAP,这里就要加key了,不然会报错。如果使用了CV_NODE_SEQ的时候加key也会报错。

    这里的key是指上面的"x","y"这些值。不加key的时候是0.

    所以,SEQ适合顺序结构,MAP适合树状结构。


    他还可以写矩阵,鉴于目前还没有学到,暂时略过。



  • 相关阅读:
    markdown基本语法
    每天一个Linux命令:pwd(3)
    每天一个Linux命令:cd(2)
    每天一个Linux命令:ls(1)
    每天一个Linux命令:man(0)
    maven命令行创建项目问题
    Regular Expression
    JS事件流
    canvas与svg区别
    js调试
  • 原文地址:https://www.cnblogs.com/tanhangbo/p/4282609.html
Copyright © 2020-2023  润新知