[英]OpenCV CvMat to Mat and pointers
我正在尝试将一些代码从使用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是浮点数*。
假设您的记忆是连续的 ,那么上面的Andrey的代码是正确的。 在某些情况下并非如此,我们不应该假设。 也许更直接的方法(不必使用指针)如下:
d_i = projectTestFace[i] - (*m_projectedTrainFaceMat).at<float>(row, col);
与Andrey相似,我假设您将m_projectedTrainFaceMat初始化为具有CV_32FC1元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.