opencv 怎么将vector<double> XValues, std::vector<double> YValues 放入到mat中两行
时间: 2023-09-24 21:09:23 浏览: 134
将vector<double> XValues和YValues放入到Mat中,每个向量对应矩阵的一行,可以使用以下代码:
```c++
std::vector<double> XValues, YValues;
int Size = XValues.size();
cv::Mat mat_array(2, Size, CV_64F);
// 将XValues和YValues数据复制到Mat的两行中
memcpy(mat_array.row(0).data, XValues.data(), XValues.size()*sizeof(double));
memcpy(mat_array.row(1).data, YValues.data(), YValues.size()*sizeof(double));
```
首先,定义了两个vector<double>对象XValues和YValues,并根据XValues的大小定义了一个2行Size列的Mat对象mat_array。然后,使用memcpy函数将XValues和YValues中的数据分别复制到Mat的两行中。
需要注意的是,这里使用memcpy函数的前提是vector和Mat对象的内存布局是相同的,即在内存中都是连续的double类型数据。如果vector和Mat对象的内存布局不同,需要使用其他方法来实现数据的复制。
相关问题
opencv 怎么将vector<double> YValues 放入mat中
将vector<double> YValues放入Mat中,可以使用以下代码:
```c++
std::vector<double> YValues;
int Size = YValues.size();
cv::Mat mat_array(1, Size, CV_64F);
// 将vector数据复制到Mat中
memcpy(mat_array.data, YValues.data(), YValues.size()*sizeof(double));
```
首先,定义了一个vector<double>对象YValues,然后根据YValues的大小定义了一个Mat对象mat_array。最后,使用memcpy函数将vector中的数据复制到Mat中。
需要注意的是,这里使用memcpy函数的前提是vector和Mat对象的内存布局是相同的,即在内存中都是连续的double类型数据。如果vector和Mat对象的内存布局不同,需要使用其他方法来实现数据的复制。
如何打印std::vector<std::pair<cv::Mat, double>>类型,一个是2d坐标,一个是3d坐标
如果你想打印一个 `std::vector<std::pair<cv::Mat, double>>` 类型的变量,可以使用如下的代码:
```c++
#include <iostream>
#include <vector>
#include <utility>
#include <opencv2/core.hpp>
int main() {
std::vector<std::pair<cv::Mat, double>> vec = {{{1, 2}, 3.0}, {{4, 5}, 6.0}};
for (const auto& p : vec) {
std::cout << p.first << ", " << p.second << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先创建了一个 `std::vector<std::pair<cv::Mat, double>>` 类型的变量 `vec`,并且为其赋值。然后,我们使用 `for` 循环遍历这个变量,对于每个元素,我们分别打印出其 `cv::Mat` 类型的 2D 坐标和 `double` 类型的 3D 坐标。需要注意的是,这里使用了 C++11 中的花括号列表初始化来初始化 `vec` 中的元素,以及使用了 `auto` 关键字来自动推导 `for` 循环中的元素类型。
阅读全文