opencv中,取出mat某一列数据放入vector中
时间: 2024-03-12 18:42:57 浏览: 60
要将 `cv::Mat` 中的某一列数据放入一个 `std::vector` 中,可以使用 `cv::Mat::col()` 方法结合 `cv::Mat::push_back()` 方法。例如,如果要取出第二列数据,可以按如下方式实现:
```
cv::Mat mat; // 假设 mat 是一个 3 行 4 列的矩阵
cv::Mat col2 = mat.col(1); // 取出第二列数据,列索引从0开始
std::vector<float> vec;
for (int i = 0; i < col2.rows; i++) {
vec.push_back(col2.at<float>(i));
}
```
这样,`vec` 就是一个 `std::vector` 类型的对象,其中包含了第二列的所有元素。在上面的代码中,我们遍历了 `col2` 中的每一行,使用 `cv::Mat::at()` 方法获取该行的元素,并将其添加到 `vec` 中。请注意,因为我们假设 `mat` 中的元素类型是 `float`,所以在使用 `cv::Mat::at()` 方法时,需要指定模板参数为 `float`。如果 `mat` 中的元素类型不是 `float`,你需要相应地修改这个参数。
阅读全文