转载:https://blog.csdn.net/u012507022/article/details/50979011?utm_source=blogxgwz5
最近在写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++;
-
}
-
}
-
}