opencv mat point2f互相装换
时间: 2023-06-28 16:07:45 浏览: 615
在 OpenCV 中,可以使用 `cv::Point2f` 类型来表示二维平面上的点,而 `cv::Mat` 类型可以用来表示图像或矩阵。如果需要在这两个类型之间进行转换,可以使用以下方法:
将 `cv::Point2f` 转换为 `cv::Mat`:
```c++
cv::Point2f point(10.0f, 20.0f);
cv::Mat mat = cv::Mat(point);
```
将 `cv::Mat` 转换为 `cv::Point2f`:
```c++
cv::Mat mat = (cv::Mat_<float>(2, 1) << 10.0f, 20.0f);
cv::Point2f point = cv::Point2f(mat);
```
需要注意的是,在将 `cv::Mat` 转换为 `cv::Point2f` 时,输入的 `cv::Mat` 必须是一个列向量,且元素个数为 2。在这个例子中,我们使用了 `cv::Mat_<float>(2, 1)` 来创建一个 2x1 的浮点型矩阵,并使用 `<<` 运算符来初始化其元素值。
另外,如果需要将一个 `cv::Point2f` 对象数组转换为 `cv::Mat`,可以使用以下方法:
```c++
cv::Point2f points[3] = {cv::Point2f(10.0f, 20.0f), cv::Point2f(30.0f, 40.0f), cv::Point2f(50.0f, 60.0f)};
cv::Mat mat = cv::Mat(3, 1, CV_32FC2, points);
```
其中,`CV_32FC2` 表示矩阵元素类型为 32 位浮点型,每个元素包含两个通道。
阅读全文