如何在OpenCV 2.4.9的for循环中用vector存储float值
在OpenCV 2.4.9中存储float类型dist值到vector的实现方法
嘿,这个需求其实非常容易实现——OpenCV 2.4.9完美兼容C++的STL容器,直接用std::vector<float>就能搞定,步骤超简单:
- 首先,确保你包含了必要的头文件:
#include <vector>(用于STL容器)和OpenCV的核心头文件#include <opencv2/core/core.hpp>。 - 提前定义一个
std::vector<float>类型的容器,用来存放所有dist值。 - 在for循环里,每次计算得到float类型的dist后,调用
push_back()方法把值添加到vector里即可。
给你一个完整的代码示例,模拟你的使用场景:
#include <opencv2/core/core.hpp> #include <vector> #include <iostream> // 用于后续打印验证 int main() { // 初始化用于存储dist值的vector std::vector<float> dist_list; // 模拟你的业务循环,这里用10次循环生成示例dist值 for (int idx = 0; idx < 10; ++idx) { // 假设这里是你计算dist的逻辑,生成一个float值 float dist = idx * 1.23f; // 示例计算,替换成你的真实逻辑 // 将当前dist存入vector dist_list.push_back(dist); } // 后续处理示例:遍历vector查看所有存储的dist值 std::cout << "所有存储的dist值:" << std::endl; for (float d : dist_list) { std::cout << d << " "; } std::cout << std::endl; return 0; }
额外补充几个小提示:
- 如果你的dist是double类型,记得用
static_cast<float>(dist)强制转换后再存入,避免类型不匹配。 - OpenCV 2.4.9也有自带的
cv::Vec类,但它更适合固定长度的向量(比如二维/三维点),存储一系列独立的dist值,std::vector<float>的灵活性更高,后续做排序、统计、传递给其他函数都更方便。 - 后续你可以直接用STL的各种算法操作这个vector,比如
std::sort()排序,std::accumulate()求和等,完全不需要额外适配。
内容的提问来源于stack exchange,提问作者Mithun
相关产品推荐
相关产品推荐

