8
A
回答
7
我不確定你真正期望的是什麼: 我給你提供的代碼只是一個例子,用來展示文件存儲在OpenCV C++綁定中的工作方式。它假定您在這裏假設您分別在XML文件中寫入所有關鍵點,並將它們的名稱作爲它們在存儲向量中的位置。
它假定當您讀回它們時,您知道它們的數量想要閱讀,如果沒有,代碼有點複雜。你會找到一種方法(例如,如果你閱讀文件存儲並測試它給了你什麼,如果它不給你任何東西,那麼這意味着沒有更多的要點) - 這只是一個想法,你必須找到一個解決方案,也許這段代碼就足夠了。 我應該精確地說我使用ostringstream來將整數放入字符串中,並通過改變它將被寫入* .yml文件的位置。
//TO WRITE
vector<Keypoint> myKpVec;
FileStorage fs(filename,FileStorage::WRITE);
ostringstream oss;
for(size_t i;i<myKpVec.size();++i) {
oss << i;
fs << oss.str() << myKpVec[i];
}
fs.release();
//TO READ
vector<Keypoint> myKpVec;
FileStorage fs(filename,FileStorage::READ);
ostringstream oss;
Keypoint aKeypoint;
for(size_t i;i<myKpVec.size();<++i) {
oss << i;
fs[oss.str()] >> aKeypoint;
myKpVec.push_back(aKeypoint);
}
fs.release();
朱利安,
7
char* key;
FileStorage f;
vector<Keypoint> keypoints;
//writing
write(f, key, keypoints);
//reading
read(f[key], keypoints);
0
int main() {
String filename = "data.xml";
FileStorage fs(filename,FileStorage::WRITE);
Vector<Mat> vecMat;
Mat A(3,3,CV_32F, Scalar(5));
Mat B(3,3,CV_32F, Scalar(6));
Mat C(3,3,CV_32F, Scalar(7));
vecMat.push_back(A);
vecMat.push_back(B);
vecMat.push_back(C);
//ostringstream oss;
for(int i = 0;i<vecMat.size();i++) {
stringstream ss;
ss << i;
string str = "x" + ss.str();
fs << str << vecMat[i];
}
fs.release();
vector<Mat> matVecRead;
FileStorage fr(filename,FileStorage::READ);
Mat aMat;
int countlabel = 0;
while(1) {
stringstream ss;
ss << countlabel;
string str = "x" + ss.str();
cout << str << endl;
fr[str] >> aMat;
if (fr[str].isNone() == 1) {
break;
}
matVecRead.push_back(aMat.clone());
countlabel ++;
}
fr.release();
for(unsigned j = 0; j < matVecRead.size(); j++){
cout << matVecRead[j] << endl;
}
}
把一個字母如 'A' 的編號爲OpenCV的XML格式的盈方指定XML密鑰必須以字母開頭。
這是爲了節省Vector<Mat>
爲Visual Studio 2010的代碼,我認爲它會爲Vector<KeyPoints>
相關問題
- 1. OpenCV findContours點矢量
- 2. 如何在C++ OpenCv中使用矢量點?
- 3. 保存矢量
- 4. 將關鍵點矢量轉換爲CvSeq
- 5. 使用Filestrage保存和讀取矢量Mat在OpenCV中的矢量保存並閱讀向量矢量使用Filestrage
- 6. 轉換關鍵點或將其保存到文本文件opencv
- 7. OpenCV將圖像,關鍵點和描述符保存到文件
- 8. OpenCV存儲矢量向量的點矢量<vector <Point>>
- 9. OpenCv Python SIFT - 如何減少關鍵點的數量?
- 10. OpenCV SURF關鍵點比較
- 11. Opencv斑點檢測和矢量化
- 12. 如何使用「矢量矢量」?
- 13. openCV:將墊子保存到矢量<vector<int>>
- 14. 保存的IplImage(OpenCV的)在C++中的矢量
- 15. 如何在OpenCV中打印矢量值
- 16. sscanf的保存到矢量
- 17. 如何在opencv中將矢量數據類型的點座標存儲?
- 18. 如何獲得矢量<Vec4i>點OpenCV的
- 19. 如何在C++中使用OpenCV解碼mpeg運動矢量?
- 20. 使用OpenCV保存JPEG metada
- 21. 如何使用Unboxed矢量?
- 22. OpenCV C++矢量DMatch到C#
- 23. opencv houghline矢量錯誤
- 24. 的OpenCV-聲明矢量
- 25. 關於矢量內存存儲
- 26. 刪除從矢量值的關鍵
- 27. 將OpenCV關鍵點轉換爲CGPoint
- 28. OpenCV描述符刪除關鍵點
- 29. OpenCV中不能得出關鍵點
- 30. 如何使用矢量<unsigned> V,爲關鍵,以搜索地圖
作品這工作得很好。我只需要一個關於fileStorage如何處理循環的例子。謝謝 – Seb
顯然FileStorage不會讓你有數字作爲關鍵。你會得到一個運行時錯誤。 「OpenCV錯誤:錯誤的參數(密鑰必須以字母或_開頭)in icvYMLWrite」必須在數字串前添加'_'。 – DXM