2017-04-22 82 views
1

我一直在嘗試在OpenCV(C++)中編寫一個vector<vector<Point>>數據類型的嵌套.xml文件。 不過,我有環路內創建總是一個額外的標籤:OpenSV上的FileStorage :: WRITE .xml標記

string filename = "test.xml"; 
FileStorage fs(filename, FileStorage::WRITE); 
fs << "data" << "["; 


    for (int i = 0; i < myvector.size(); ++i) 
    { 
     //Write each vector 
     fs << "{:" << "vector" << "[:"; 

     for (int j = 0; j < myvector[i].size(); ++j) 
     { 
      fs << "{:" << "point"; 
      //Write each point 
      fs << "{" << "x" << myvector[i][j].x << "y" << myvector[i][j].y << "}"; 
      fs << "}"; // close point 
     } 
     fs << "]" << "}"; // close vector 
    } 
    fs << "]"; // close data 
    fs.release(); 

結果是:

<?xml version="1.0"?> 
<opencv_storage> 
<data> 
    <_><vector><_><point> 
      <x>162</x> 
      <y>30</y></point></_> 
     <_><point> 
      <x>162</x> 
      <y>31</y></point></_> 
     <_><point> 
      <x>161</x> 
      <y>32</y></point></_> 
     </vector></_> 
    </data> 
</opencv_storage> 

而預期輸出應該(也需要循環中的更改標籤名稱)

<?xml version="1.0"?> 
<opencv_storage> 
    <data> 
    <vector> 
     <point1> 
      <x>162</x> 
      <y>30</y> 
     </point1> 
     <<point2> 
      <x>162</x> 
      <y>31</y> 
     </point2> 
     <point3> 
      <x>161</x> 
      <y>32</y> 
     </point3> 
     </vector> 
    </data> 
</opencv_storage> 

有什麼想法可能會導致此問題?謝謝!

回答

2

這兩個序列都有括號(「[」)和映射(「{」)。你可以試試這個:

string filename = "test.xml"; 
FileStorage fs(filename, FileStorage::WRITE); 
fs << "data" << "{"; 
for (int i = 0; i < myvector.size(); ++i) 
    { 
     //Write each vector 
     fs << "vector" << "{"; 

     for (int j = 0; j < myvector[i].size(); ++j) 
     { 
      fs << "point" << "{"; 
      //Write each point 
      fs << "x" << myvector[i][j].x << "y" << myvector[i][j].y ; 
      fs << "}"; // close point 
     } 
     fs << "}"; // close vector 
    } 
    fs << "}"; // close data 
fs.release(); 

更多信息here

+0

它的工作!謝謝! –