我想在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));
没用。对此有何帮助?
答案 0 :(得分:1)
你的问题在这里:
sizeof(*svv)
这不会给你数组中的元素数量;它为您提供svv
指向的第一个元素的大小。由于这是float
,sizeof
会为您提供4
。
您无法通过指向数组的指针来判断数组的大小。您必须知道数组的长度并直接传递该值或使用某个数组类。
请注意,即使您已经传递了数组本身,sizeof
仍然无法正常工作,因为它会为您提供数组中的字节数,而不是元素数。