vector<Point2f> 转cv::mat
时间: 2024-09-27 22:06:09 浏览: 34
OpticalFlowImageDetection:将openCV库光流图像检测与FAST结合使用编辑添加主题
`vector<Point2f>` 是 OpenCV 中的一个向量容器,它存储的是 `Point2f` 类型的对象,每个元素代表二维平面上的一个点。而 `cv::Mat` 是 OpenCV 中的一种矩阵数据结构,可以用于表示图像、数组等。
如果你有一个 `vector<Point2f>` 并想将其转换成 `cv::Mat`,通常是为了方便处理或者与 OpenCV 的其他函数兼容,你可以这样做:
```cpp
#include <opencv2/core.hpp>
// 假设你已经有一个 vector<Point2f> 叫做 points
cv::Mat mat;
if (!points.empty()) {
// 矩阵的行数等于点的数量,列数设置为2(对应x和y坐标)
int rows = points.size();
int cols = 2;
mat.create(rows, cols, CV_32FC1); // 使用单精度浮点类型
for (size_t i = 0; i < rows; ++i) {
cv::Point2f point = points[i];
mat.at<cv::Vec2f>(i) = cv::Vec2f(point.x, point.y);
}
}
```
这里我们创建了一个 `cv::Mat`,并把 `vector<Point2f>` 中的点一一赋值到矩阵中。注意 `.at()` 方法用于访问或修改指定索引处的元素。
阅读全文