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

时间:2017-02-22 11:36:51

标签: c++ arrays opencv vector casting

背景

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

代码

我目前想转换它:

Route::get('/home', 'editController@index');
Route::get('/editProfile', 'editController@edit');
Route::post('/updating', 'editController@update');

成一个浮点数向量的数组。但是,我很清楚,简单的演员阵容是不够的。那我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

一个简单的循环怎么样?

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

答案 1 :(得分:1)

数据结构

cv::vector<cv::Vec3f>类型转换为float类型

之前

你必须了解什么样的数据结构cv::vector<cv::Vec3f>  是

它就像一个二维矢量std::vector<cv::Vec3f>

enter image description here

所以你不能只将float变量赋值给2d向量

您必须使用另一个具有浮点类型的2d向量来存储数据内容