将常量浮点*转换为垫子
convert const float* into Mat
我想在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));
这是没有用的。请问有什么帮助吗?
你的问题在这里:
sizeof(*svv)
这不会给你数组中元素的数量;它给你svv
指向的第一个元素的大小。由于这是一个float
,sizeof
给你4
。
您无法从指向数组的指针中分辨出数组的大小。您必须知道数组的长度并直接传递该值,或者使用某个数组类。
请注意,即使您传递了数组本身,sizeof
仍然无法工作,因为它会为您提供数组中的字节数,而不是元素数。
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 为什么我收到"从常量指针到指针的转换无效?
- 从'size_t'转换为"常量双倍",可能会丢失数据
- 在编译时将常量字符* 转换为常量 char_type*
- 为什么下面带有非常量转换函数的代码没有歧义?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 字符串强制转换为常量字符*
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 将错误作为从字符串常量到"char*"的已弃用转换 [-Wwrite-strings]
- 将编译时常量向量转换为堆分配版本
- 在<uint8_t> <char> c++ 中将常量向量转换为常量向量
- 在不同类型之间转换常量指针
- 转换(常量字符*)变量出错
- C++大小写中的类型转换常量字符串
- 转换常量无符号字符无效
- 转换常量表达式定义的说明
- c++ 11强制转换常量迭代器,指向shared_ptr对象的容器
- 条件运算符+上转换+常量引用
- c++限定转换-常量和模板