Перейти к содержимому
Compvision.ru
helloworld

Соединение двух и более матриц в одну

Recommended Posts

Привет всем,

Не могу понять как соединить несколько матриц в одну. Например, матрица 5x128 и 4x128. Хочу получить результат 9х128 с сохранением элементов из 1 и 2 матрицы.

Вот код, который связан с SURF методом:


// result matrix, trainRow = num of points found by SURF x num of images(trainImgNum)

CvMat* points = cvCreateMat( trainRow, 128, CV_32FC1 );


for (i=0; i<trainImgNum;i++)

{

 vector<CvPoint2D32f> pt;

 // fill vector

 int k = 0;

 for( k = 0; k < trainDescriptors[i]->total; k++ )

 {

   // extract

   CvSURFPoint* point =((CvSURFPoint*)cvGetSeqElem(trainDescriptors[i], k));

   pt.push_back(point->pt);

 }

 // creat matrix   total num of points x 128

 CvMat temp = cvMat(trainDescriptors[i]->total, 128, CV_32FC1, &pt[0] );


// зздесь хотелось бы заполнять points матрицу по мере возрастания.

}


Я пробовал добавлять cvGetRows в for-loop, но почему то элементы конечной матрицы равны нулю. :(
cvGetRows(      points,

                &temp,

                pos,

                pos+(trainDescriptors[i]->total));

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Создать большую матрицу.

2. Скопировать по указателю на её данные первую матрицу через обычный memcpy.

3. Сдвинуть указатель и скопировать данные второй матрицы.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×