最近在写Opencv程序,用到离散小波变换,但Opencv没有提供离散小波变换函数。但找到了离散小波变换函数的C++程序,发现在C++中,可以用 vector<vector<double>> 来表示矩阵。
int Height = 200;
int Width = 400;
vector<vector<double>> signal2(Height,Width);
cout<<"矩阵的行数"<<signal2.size()<<endl;
cout<<"矩阵的列数"<<signal2[0].size()<<endl;
vector<vector<double>>与Mat数据类型可以进行转换
//Mat 转换为vector<vector<double>>
void Mat2vector(Mat &src,vector<vector<double>> &dst)
{
assert( src.rows== dst.size());
MatIterator_<double> it, it2;
it = src.begin<double>();
it2 = src.end<double>();
for(int i=0;i<src.rows;i++)
{
for(int j=0;j<src.cols;j++)
{
dst[i][j]=*it++;
}
}
}
//vector<vector<double>> 转换为Mat
void Vector2Mat(vector<vector<double>>src,Mat dst)
{
assert( dst.rows== src.size());
MatIterator_<double> it = dst.begin<double>();
for(int i=0;i<src.size();i++)
{
for(int j=0;j<src[0].size();j++)
{
*it=src[i][j];
it++;
}
}
}