Решение по ОП.
Я исправил это с помощью следующего кода:
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 столбцов .. каждая строка представляет отдельную матрицу .. row, row2, row3, row4 и row5