如何从 cv::Vec3f 转换为浮点类型?

Posted

技术标签:

【中文标题】如何从 cv::Vec3f 转换为浮点类型?【英文标题】:How to cast from cv::Vec3f to a float type? 【发布时间】:2017-02-22 11:36:50 【问题描述】:

背景

我目前正在尝试在运行 Ubuntu MATE 16.04 LTSRapsberry Pi 上使用 ROS 构建自主无人机。解决目前识别红色圆圈的计算机视觉问题。

代码

我目前想转换这个:

cv::vector<cv::Vec3f> circles

放入一个浮点向量数组。但是,我很清楚,简单的演员阵容是不够的。那么我应该如何处理呢?

【问题讨论】:

通过使用 cv::vector 和 cv::Vec 类的文档访问器将浮点数复制到数组中? 【参考方案1】:

那么简单的循环呢?

std::vector<cv::Vec3f> circles;

// 'circles' filled somehow...

// Get 'circles' as a vector of vector of floats 'v'
std::vector<std::vector<float>> v(circles.size(), std::vector<float>(3));

for(size_t i=0; i<circles.size(); ++i) 

    const cv::Vec3f& c = circles[i];             
    v[i][0] = c[0];
    v[i][1] = c[1];
    v[i][2] = c[2];


不要使用cv::vector。请改用std::vector。详情请见here。

【讨论】:

这不是 OP 要求的“浮点向量数组”。【参考方案2】:

数据结构

在将cv::vector&lt;cv::Vec3f&gt; 类型转换为float 类型之前

你要明白cv::vector&lt;cv::Vec3f&gt;是什么样的数据结构 是

就像一个二维向量std::vector&lt;cv::Vec3f&gt;

所以你不能只将浮点变量分配给二维向量

你必须使用另一个浮点类型的二维向量来存储数据内容

【讨论】:

感谢您这么晚的答复!很有帮助! @SharanDuggirala 我也遇到了同样的问题,谢谢你提出这个问题 @SharanDuggirala 竖起大拇指

以上是关于如何从 cv::Vec3f 转换为浮点类型?的主要内容,如果未能解决你的问题,请参考以下文章

python pandas中如何将dataframe中的一列字符串类型转换为浮点类型?

Oracle数据库 如何把浮点型数1.23456789转换为只保留两位小数1.23

从整数到浮点的转换如何工作?

BigQuery 帮助 - 如何转换并转换为浮点和日期格式

如何在 PySpark 1.6 中将 DataFrame 列从字符串转换为浮点/双精度?

qt中如何将浮点型转换成字符型