7
A
回答
10
你的問題是一個很好的問題。 保存到XML需要更多光盤空間並加載速度較慢。 我自己有問題,並寫了一個簡短的代碼,將Mat保存到光盤, 您可以更改它以保存其他對象。
// Save matrix to binary file
int saveMat(const string& filename, const Mat& M){
if (M.empty()){
return 0;
}
ofstream out(filename.c_str(), ios::out|ios::binary);
if (!out)
return 0;
int cols = M.cols;
int rows = M.rows;
int chan = M.channels();
int eSiz = (M.dataend-M.datastart)/(cols*rows*chan);
// Write header
out.write((char*)&cols,sizeof(cols));
out.write((char*)&rows,sizeof(rows));
out.write((char*)&chan,sizeof(chan));
out.write((char*)&eSiz,sizeof(eSiz));
// Write data.
if (M.isContinuous()){
out.write((char *)M.data,cols*rows*chan*eSiz);
}
else{
return 0;
}
out.close();
return 1;
}
/****************************************************************************/
// Read matrix from binary file
int readMat(const string& filename, Mat& M){
ifstream in(filename.c_str(), ios::in|ios::binary);
if (!in){
M = NULL_MATRIX;
return 0;
}
int cols;
int rows;
int chan;
int eSiz;
// Read header
in.read((char*)&cols,sizeof(cols));
in.read((char*)&rows,sizeof(rows));
in.read((char*)&chan,sizeof(chan));
in.read((char*)&eSiz,sizeof(eSiz));
// Determine type of the matrix
int type = 0;
switch (eSiz){
case sizeof(char):
type = CV_8UC(chan);
break;
case sizeof(float):
type = CV_32FC(chan);
break;
case sizeof(double):
type = CV_64FC(chan);
break;
}
// Alocate Matrix.
M = Mat(rows,cols,type,Scalar(1));
// Read data.
if (M.isContinuous()){
in.read((char *)M.data,cols*rows*chan*eSiz);
}
else{
return 0;
}
in.close();
return 1;
}
+0
可能會添加一個註釋,表明您的代碼不處理簽名類型,如'CV_8S' – 2013-12-29 13:27:34
+0
這並不回答實際問題,但是非常有用。 – Parmaia 2014-02-13 16:28:03
相關問題
- 1. 存儲到DB opencv數據
- 2. HashIds - 將數據存儲到數據庫或不存儲到
- 3. 數據存儲到數據庫
- 4. TimeMe.js將數據存儲到數據庫
- 5. 使用openCV SVN存儲庫
- 6. 數據庫存儲
- 7. 如何在數據庫中將數據存儲到數據庫
- 8. 將數組存儲到SQLite數據庫
- 9. opencv數據通過xml存儲優秀?
- 10. 關係數據庫到三重存儲
- 11. 將對象存儲到數據庫
- 12. 存儲視圖算到數據庫
- 13. 將CDA存儲到關係數據庫
- 14. 將圖像存儲到sqlite數據庫
- 15. 將getid3存儲到數據庫
- 16. 存儲陣列到數據庫
- 17. 將圖像存儲到SQLite數據庫
- 18. 值不存儲到數據庫中
- 19. 未存儲到數據庫的圖像
- 20. 豬存儲到MySQL數據庫 - ClassNotFoundException:'com.mysql.jdbc.Driver'
- 21. 將picturebox圖像存儲到數據庫
- 22. 將XML存儲到Oracle數據庫中
- 23. 分頁和存儲到數據庫
- 24. 將變量存儲到數據庫中
- 25. 將圖像存儲到sqlite3數據庫
- 26. 存儲到數據庫中 - 問題
- 27. JPA:將fileAttachment存儲到數據庫中
- 28. 存儲數據庫值到變量
- 29. c#將圖片存儲到數據庫
- 30. 通過Spring數據存儲庫將數據保存到數據庫
開放是爲開源,你有源代碼,沒有黑盒 – Eric 2010-07-06 21:30:02
Thx埃裏克,你是對的。我的意思是,也許有比重新編譯opencv更簡單的方法。有人已經處理opencv和數據庫嗎? – Jayka 2010-07-07 09:02:36
我敢肯定,如果你有XML文件,你可以解析XML文件並將其保存到數據庫。 – 2010-08-29 02:06:16