如何在打开的 cv 中使用向量将一些浮点值存储在 for 循环中

Posted

技术标签:

【中文标题】如何在打开的 cv 中使用向量将一些浮点值存储在 for 循环中【英文标题】:How can I store some float values in a for loop using vector in open cv 【发布时间】:2018-03-12 16:30:18 【问题描述】:

我在 for 循环中有一些浮点值。现在我想将这些值存储在一个向量中以供进一步处理。我如何在 opencv 2.4.9 中编写。这是代码

for(int i= 0; i < contours.size(); i++)

for(int j= 0; j < contours[i].size();j++)

boundry.x= contours[i][j].x;
     boundry.y=contours[i][j].y ;
     float distx = x_comp-boundry.x;
    float disty = y_comp-boundry.y;
    float dist=sqrt((distx*distx)+(disty*disty));


现在我必须将这些 dist 值存储在向量中以供进一步处理。请帮忙

【问题讨论】:

您对这项任务有什么疑问?你有矢量了吗? 没有。 dist 值出现在每个循环中。现在我必须存储它们 std::vector 距离; distance.push_back(dist);它不工作 你会在 for 循环之外创建 std:vector 吗? 在循环内是的。但是当我打印这些值时,只有单个值相对来了 【参考方案1】:

如果您想使用这些值进行进一步处理,您应该在 for 循环之外定义向量,否则将不会保存数据。然后你可以使用一个简单的标准向量和 push_back。

std::vector<float> distance;
for(int i= 0; i < contours.size(); i++)

 for(int j= 0; j < contours[i].size();j++)
 
    boundry.x= contours[i][j].x;
    boundry.y= contours[i][j].y ;
    float distx = x_comp-boundry.x;
    float disty = y_comp-boundry.y;
    float dist=sqrt((distx*distx)+(disty*disty));
    distance.push_back(dist);
 

【讨论】:

没关系。但是当我 printf 距离向量的值只有 0.00000 时。如果我更改向量 距离,那么像 5074432 这样的值会重复出现。那么如何在向量中显示所有距离值 您是否比较了循环内外打印的值?你用什么函数来打印? 变量 contours 的类型是什么?它只是一个数组还是一个 cv::Mat? 距离是从 cvpoint 计算出来的。它是一个固定点和点数组之间的距离。现在我必须将这些距离值存储在一个向量中以供下次处理 轮廓取自 cvcontour from opencv

以上是关于如何在打开的 cv 中使用向量将一些浮点值存储在 for 循环中的主要内容,如果未能解决你的问题,请参考以下文章

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

SSE 的整数/浮点值

如何将无符号字符数组存储为浮点值?

将浮点值存储在数组中,并分析最后 20 个值以在 C++ 中检查

如何将字符串列表转换为c#中的浮点列表,统一?

如何使用opencv从矩阵向量构造图像