Mat存储 Mat和QString相互转换
最近项目需要用到Mat网络存储的功能,网上找了很多大多都是通过生成文件的方式,最后自己实现了Mat和QSring相互转换来存储的方式,废话不说了 直接上代码:
QString AppManager::Mat2QString(const Mat& src )
{
if(src.empty()) return QString();
stringstream stream;
stream<<src;
return QString::fromStdString(stream.str());
}
Mat AppManager::QString2Mat(QString text)
{
QStringList rowvalueList=text.split(";");
int Matrow=rowvalueList.size();
int Matcol=QString(rowvalueList[0]).split(",").size();
float *matrix = new float[Matrow*Matcol];
for(int row=0;row<Matrow;++row){
QString rowvalues=rowvalueList[row];
QStringList colvalues= rowvalues.split(",");
for(int col=0;col<Matcol;++col){
float value=QString(colvalues[col]).replace("\n","").replace("[","").replace("]","").toFloat();
matrix[row*Matcol+col]=value;
}
}
Mat Matrix(Size(Matcol, Matrow), CV_32FC1, matrix);//注意:opencv里的行列顺序是和maltab相反的
delete []matrix;
return Matrix;
}
第一次写博客,有不足的地方希望大家指正