将const float *转换为Mat

时间:2017-07-23 15:18:17

标签: c++ opencv

我想在opencv 2.4.11中将const float *数组转换为Mat数组。 我试过这个:

const float *svv = svm->get_support_vector(0);//this method returns const float*
cv::Mat sv= cv::Mat(1, sizeof(*svv), CV_32F, const_cast<float *>(svv));

没用。对此有何帮助?

1 个答案:

答案 0 :(得分:1)

你的问题在这里:

sizeof(*svv)

这不会给你数组中的元素数量;它为您提供svv指向的第一个元素的大小。由于这是floatsizeof会为您提供4

您无法通过指向数组的指针来判断数组的大小。您必须知道数组的长度并直接传递该值或使用某个数组类。

请注意,即使您已经传递了数组本身,sizeof仍然无法正常工作,因为它会为您提供数组中的字节数,而不是元素数。