Как мне преобразовать одноканальный мат размером 3 на 3 в трехканальный массив размером 1 на 3 в OpenCV?

#c #opencv

#c #opencv

Вопрос:

У меня есть матрица вращения 3 на 3, созданная с помощью заголовка cvCreateMat(3, 3, CV_32FC1) . Это матрица, которую я получаю при вызове cvRodrigues2. Я хочу повернуть несколько точек, хранящихся в массиве длиной N, с 3 каналами. Для выполнения этого поворота я вызываю cvMul(rotation, points) , но для этого требуется, чтобы матрица поворота была массивом. Поэтому мне нужно преобразовать его в cvCreateMat(3, 1, CV_32FC3) . Есть ли какой-либо способ сделать это в OpenCV (на C, если это имеет какое-либо значение).

Ответ №1:

Используя cvReshape (ссылка на документацию). Второй пример очень похож на то, что вы хотите (вам просто нужно адаптировать количество строк и каналов).