记录一下(每次用到的时候还得去找...):
网上c++生成xml的方法有很多,这里简单介绍以下opencv自带的FileStorage函数使用方法,
1、生成xml文件:
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void img_save_xml(String img_path, String xml_name) {
FileStorage file_storage; //调用FileStorage 函数
file_storage.open(xml_name, FileStorage::WRITE); //WRITE 是写入
vector<String>src_test; //存放图片路径的容器
glob(img_path, src_test, false);//将文件夹路径下的所有图片路径保存到src_test中
if (src_test.size() == 0) {//判断文件夹里面是否有图片
printf("error!!!\n");
exit(1);
}
for (int i = 0; i < src_test.size(); i++) {//依照顺序读取问价下面的每张图片,并显示
cout << src_test[i] << endl;
}
file_storage << "images" << "[";
for (int i = 0; i < src_test.size(); i++) {//依照顺序读取问价下面的每张图片,并显示
file_storage << src_test[i];
}
file_storage << "]";
file_storage.release(); //释放
}
int main() {
String img_path = "";//文件夹路径
String xml_name = "";//xml文件保存名称
img_save_xml(img_path, xml_name);
}
效果:
虽然保存的路径有// 和 \ 但并不影响图片的读取,如果是强迫症那就自己修改一下(本人懒.....)
2、调用xml文件
FileStorage file_storage;
file_storage.open(xml_name, FileStorage::READ);
vector<String>src_test;
file_storage["images"] >> src_test;
for (int i = 0; i < src_test.size(); i++) {//依照顺序读取问价下面的每张图片,并显示
cout << src_test[i] << endl;
}
FileStorage相关介绍: