我有5个mxn矩阵..首先我使用以下代码将它们转换为1行矩阵:
//now converting to 1 row matrix
CvMat row_header, *row;
row = cvReshape(mat, &row_header, 0, 1)
这是正确的吗?
然后假设我有5个这样的矩阵(1行50列)如何将它们组合成一个大矩阵(5行和50列)?
答案 0 :(得分:4)
首先,学习OpenCV的C ++ API 。
然后做某事。像这样:
cv::Mat dest(number_of_rows, number_of_columns);
row1.copyTo(dest.row(1));
row2.copyTo(dest.row(2));
...
来源:http://opencv.itseez.com/modules/core/doc/basic_structures.html?highlight=mat_#mat-row
答案 1 :(得分:0)
OP解决方案。
我用以下代码修复了它:
CvMat *M1;
//cv::Mat M1(2,row->width,CV_32FC1);
M1 = cvCreateMat(5,row->width,CV_32FC1 );
//row.copyTo(M1.row(0));
//row2.copyTo(M1.row(2));
//M1.row(0) = 0;
//M1.row(0) = row + 0;
//M1.row(1) = 0;
//M1.row(1) = row2 + 0;
cvSetZero(M1);
/*for(int i=0;i<5;i++)
{
for(int j=0;j<row->width;j++)
{
CV_MAT_ELEM( *M1, float, i, j ) = CV_MAT_ELEM( *rowi, float, 0, i );*/
for(int i=0;i<row->width;i++)
{
CV_MAT_ELEM( *M1, float, 0, i ) = CV_MAT_ELEM( *row, float, 0, i );
}
for(int j=0;j<row2->width;j++)
{
CV_MAT_ELEM( *M1, float, 1, j ) = CV_MAT_ELEM( *row2, float, 0, j );
}
for(int k=0;k<row2->width;k++)
{
CV_MAT_ELEM( *M1, float, 2, k ) = CV_MAT_ELEM( *row3, float, 0, k );
}
for(int l=0;l<row2->width;l++)
{
CV_MAT_ELEM( *M1, float, 3, l ) = CV_MAT_ELEM( *row3, float, 0, l );
}
for(int m=0;m<row2->width;m++)
{
CV_MAT_ELEM( *M1, float, 4, m ) = CV_MAT_ELEM( *row4, float, 0, m );
}
矩阵M1是一个5列矩阵,有50列..每行代表一个单独的矩阵..行,行2,行3,行4和行5