OpenCV CvMat到Mat和指针

OpenCV CvMat to Mat and pointers

本文关键字:指针 Mat CvMat OpenCV      更新时间:2023-10-16

我正试图将一些代码从使用OpenCV的CvMat转换为Mat,但我在指针方面遇到了一些麻烦。

这是原始代码:

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

这是我更新的代码:

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

正如您所看到的,我从对data的调用中删除了.fl,但我不能完全弄清楚如何将数据作为浮点数返回。

有什么建议吗?我试过将其转换为float和(float *),但它们最终导致错误/错误。

e: projectTestFace是一个float*.

Andrey上面的代码是正确的,假设你的内存是连续的有些情况下不是这样,我们不应该假设。也许更直接的方法(不需要使用指针)如下:

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

与Andrey类似,我假设您的m_projectedTrainFaceMat被初始化为具有CV_32FC1元素。