OpenCV CvMat 到 Mat 和指针
Posted
技术标签:
【中文标题】OpenCV CvMat 到 Mat 和指针【英文标题】:OpenCV CvMat to Mat and pointers 【发布时间】:2011-08-06 07:51:24 【问题描述】:我正在尝试将一些代码从使用 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];
如您所见,我从对数据的调用中删除了 .fl,但我不太清楚如何将数据作为浮点数返回。
有什么建议吗?我尝试将其转换为 float 和 (float *) 但最终导致错误/错误。
e: projectTestFace 是一个浮点数*。
【问题讨论】:
【参考方案1】:假设您的记忆是连续的,上述 Andrey 的代码是正确的。在某些情况下,情况并非如此,我们不应该假设。也许更直接的方法(不必使用指针)如下:
d_i = projectTestFace[i] - (*m_projectedTrainFaceMat).at<float>(row, col);
与 Andrey 类似,我假设您的 m_projectedTrainFaceMat 已初始化为具有 CV_32FC1 元素。
【讨论】:
以上是关于OpenCV CvMat 到 Mat 和指针的主要内容,如果未能解决你的问题,请参考以下文章