Hi , I am getting the error while reading the xml file. The error message is.."duplicate key".
int main() { std::vector<std::string> names = { "SuperPixelno", "lValue", "aValue","bValue","xCenter","yCenter","depthValue" }; cv::FileStorage fs("FeatureVector.xml", cv::FileStorage::WRITE); superpixelSlic.writeVector(fs, names, tempCenters); fs.release();
vector<centervalues> readTempCenters; std::vector<std::string> nm = { "SuperPixelno", "lValue", "aValue","bValue","xCenter","yCenter","depthValue" }; FileStorage fs2("FeatureVector.xml", FileStorage::READ); readVector(fs2, nm, readTempCenters); fs2.release();
return (0); }
void readVector(FileStorage &fns, vector<std::string> nm, vector<centervalues> &data) { data.clear();
CenterValues tmp;
FileNode fn = fns["features"];
if (fn.empty()) {
return;
}
for (FileNodeIterator current = fn.begin(); current != fn.end(); ++current)
{
//FileNode item = *current;
cout << "superpixelno. " << (double)(*current)[nm[0]];
cout << "light Value " << (double)(*current)[nm[1]];
cout << "a value" << (double)(*current)[nm[2]];
cout << "b value" << (double)(*current)[nm[3]];
cout << "x Value" << (double)(*current)[nm[4]];
cout << "y Value" << (double)(*current)[nm[5]];
cout << "depth Value" << (double)(*current)[nm[6]];
}
}
void SuperpixelSlic:: writeVector(cv::FileStorage &fs, std::vector<std::string> &names, std::vector<centervalues> &data) {
for (int i = 0; i < data.size(); i++)![image description](/upfiles/1518773204719258.png)
{
fs << "features";
fs <<"{:"<< names[0] << i<<names[1] << data[i].lightValue <<names[2] << data[i].aValue<<names[3] << data[i].bValue << names[4] << data[i].xValue<<names[5] << data[i].yValue<<names[6] << data[i].depthValue<<"}";
}
}