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. TimeMe.js将数据存储到数据库
- 4. 数据库存储
- 5. 将数组存储到SQLite数据库
- 6. opencv数据通过xml存储优秀?
- 7. 将图像存储到SQLite数据库
- 8. 将对象存储到数据库
- 9. 将图像存储到sqlite3数据库
- 10. 将变量存储到数据库中
- 11. 将getid3存储到数据库
- 12. JPA:将fileAttachment存储到数据库中
- 13. 存储数据库值到变量
- 14. 存储到数据库中 - 问题
- 15. 存储视图算到数据库
- 16. c#将图片存储到数据库
- 17. 关系数据库到三重存储
- 18. 通过Spring数据存储库将数据保存到数据库
- 19. 将元数据存储到Jackrabbit存储库中
- 20. 存储数据库程序
- 21. 存储在数据库
- 22. 数据库的存储
- 23. 储存HTML和数据库
- 24. 存储在MySQL数据库
- 25. 存储元数据库
- 26. 统一数据库存储
- 27. 存储数据库连接
- 28. Sqlite数据库存储
- 29. Android的数据库存储
- 30. 面向dificulty存储数据从HTML5存储到应用程序数据库
开放是为开源,你有源代码,没有黑盒 – 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