【问题标题】:OpenCV CvMat to Mat and pointersOpenCV CvMat 到 Mat 和指针
【发布时间】: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 是一个浮点数*。

【问题讨论】:

    标签: c++ pointers opencv matrix floating-point


    【解决方案1】:

    假设您的记忆是连续的,上述 Andrey 的代码是正确的。在某些情况下,情况并非如此,我们不应该假设。也许更直接的方法(不必使用指针)如下:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      相关资源
      最近更新 更多