学习
实践
活动
专区
工具
TVP
写文章

16.物体识别的重要数据文件-OpenCV从零开始到图像识别系列

本文作者:小嗷

微信公众号:aoxiaoji

简书链接:https://www.jianshu.com/u/45da1fbce7d0

Google、百度、face++、凡是涉及有关物体识别公司,他们最值钱不是算法什么,而是那份保存成千上万样本文件。当然,文件格式也是千奇百怪。今天就说说最经常用到文件格式XML。

如果大家有做过人脸识别就可以体会到,用主分量分析法得到的特征脸、平均脸等等数据都会被保存成为XML格式

本文你会找到以下问题的答案:

如何使用YAML或XML文件打印和读取文本条目到文件和OpenCV中?

如何对OpenCV数据结构进行同样的操作?

如何为您的数据结构做这些?

使用OpenCV数据结构,如cv::FileStorage, cv::FileNode或cv::FileNodeIterator。

用途:生成数据文件(如下官方自带生成的识别文件)

haarcascadeeye和haarcascadesmile分别代表是眼睛识别和微笑识别的数据文件

3.1 FileStorage

XML/YAML/JSON文件存储类,它封装了从文件中写入或读取数据所需的所有信息。

API函数网址:

https://docs.opencv.org/master/da/d56/classcv11FileStorage.html#details

(1)实例化一个FileStorage类的对象,用默认带参数构造,完成初始化,或者用FileStorage::open()成员函数辅助初始化。当然,FileStorage构造函数一共有三个具体情况,视情况而定。

如上图FileStorage构造函数第二个:

flags:操作模式有如下

读写添加,还有保存在内存缓冲区里,什么格式等等。

(2)使用流操作符>进行文件读取操作,类似C++中的文件输入输出流。

(3)使用FileStorage::release()函数析构掉FileStorage类对象,同时关闭文件

也就是我们只需要完成FileStorage三部曲,就学习这种OpenCV基础及重要的XML,JSON,YXML读取写入操作。

当然,各位可能说如何创建一个新的XML文件?

默认打开的时候,如果没有该文件就自动创建文件,打开成功fout返回true,利用true来判断是否创建成功。VC++代码如下:

结果如下

任务一:XML与YAML的文件写入

任务二:XML与YAML的文件写入

步骤:

第一步:XML、YAML文件的打开

在Opencv中,使用FileStorage进行文件读写。XML文件操作与YAML一样,不过存在一些细小差别。

文档打开后很关心的一件事就是,进行确认是否成功。FileStorage有自己的成员函数返回文件打开状态:

第二步:进行文件读写操作

FileStorage文件读与写的方法与C++语言中的文件流对象的使用很像,对>>和

注意:

fs

读取

文件读取的方法有两种:

读写还有类型如下

Input and Output of text and numbers.

Input/Output of OpenCV Data structures. (opencv自带Mat)

Input/Output of vectors (arrays) and associative maps.(数组和maps)

Read and write your own data structures.(你自己的数据类型)

具体查考:

https://docs.opencv.org/master/dd/d74/tutorialfileinputyml.htmlwithxmlyml.html

第三步:文件关闭

fs.release();

写入XML或YAML文件

代码如下

读XML或YAML文件

代码如下:

FileNode类的API网址:

https://docs.opencv.org/master/de/dd9/classcv11FileNode.html

如果不懂的话,QQ或者微信公众号通知一声。

1.写操作效果图

2.读操作效果图

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180601G08KVN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券