У меня есть функция, которая вычисляет и «создает» матрицу.Моя функция работает хорошо, когда она встроена, но когда я пытаюсь поместить код в функцию, у меня возникают проблемы с возвратом матрицы результатов.
Я хочу, чтобы мой вызов функции был таким:
CvMat projectionResult;
project_on_subspace(&projectionResult);
cvShowImage("test", &projectionResult );
(в конечном итоге используя *CvMat
вместо `CvMat)
Я сделал следующее:
void project_on_subspace(CvMat * source)
{
source = cvCreateMat( feature_positions[feature_number].height, feature_positions[feature_number].width, CV_32FC1 );
//some more code
}
Но функция cvCreateMa
t изменяет значениеуказатель источника, поэтому, когда я возвращаюсь из функции, матрица projectionResult
не инициализируется.
Я знаю, что это действительно простой вопрос, но я не совсем понимаю, как заставить это работать?Возможно ли это сделать без изменения прототипа функции или мне нужно изменить его на **CvMat
вместо *CvMat
?
Редактировать: я предпочел бы вернуть свой результат, используя вуказатель на аргумент, вместо использования оператора return, но оба в порядке.