OpenCV CvMat для Mat и указатели - PullRequest
       32

OpenCV CvMat для Mat и указатели

1 голос
/ 06 августа 2011

Я пытаюсь преобразовать некоторый код из CvMat OpenCV в Mat, но у меня возникают проблемы с указателями.

Это оригинальный код:

CvMat *m_projectedTrainFaceMat;
float d_i;
i = 0;
d_i = projectTestFace[i] - m_projectedTrainFaceMat->data.fl[iTrain * m_nEigens + i];

Вот мой обновленныйcode:

Mat *m_projectedTrainFaceMat;
float d_i;
i = 0;
d_i = projectTestFace[i] - m_projectedTrainFaceMat->data[iTrain * m_nEigens + i];

Как видите, я удалил .fl из обращения к данным, но не могу понять, как вернуть данные в виде чисел с плавающей запятой.

Любые предложения?Я попытался привести его к float и (float *), но в итоге он вызвал ошибки / ошибки.

e: projectTestFace - это float *.

1 Ответ

1 голос
/ 20 декабря 2011

Код Андрея выше верен, если предположить, что ваша память непрерывна . Есть случаи, когда это не так, и мы не должны предполагать. Возможно, более простой способ (без использования указателей) был бы следующим:

d_i = projectTestFace[i] - (*m_projectedTrainFaceMat).at<float>(row, col);

Аналогично Андрею, я предполагаю, что ваш m_projectedTrainFaceMat инициализирован как имеющий элементы CV_32FC1.

...