opencvsharp Point[][] contours转换成IEnumerable<Point2f>
时间: 2023-12-05 17:03:38 浏览: 228
可以使用以下代码将 `Point[][]` 转换为 `IEnumerable<Point2f>`:
```csharp
using OpenCvSharp;
// contours 是 Point[][] 类型的变量
IEnumerable<Point2f> points = contours.SelectMany(contour => contour.Select(point => new Point2f(point.X, point.Y)));
```
这里使用了 LINQ 的 `SelectMany()` 方法将 `Point[][]` 中的所有点转换为 `Point2f` 类型,并将它们合并为一个 `IEnumerable<Point2f>` 对象。注意需要在代码中引用 `OpenCvSharp` 命名空间。
相关问题
vector<vector<Point>> contours;
`vector<vector<Point>> contours;`是一个C++中的定义,表示一个双重向量,其中每个元素都是一个由连续的Point点构成的点的集合的向量。这个双重向量被称为`contours`,它保存了多个轮廓,每个轮廓都是一个由连续的Point点构成的点的集合。
范例:
```cpp
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
int main() {
std::vector<std::vector<cv::Point>> contours;
// 添加轮廓数据到contours中
// 输出轮廓数量
std::cout << "轮廓数量:" << contours.size() << std::endl;
return 0;
}
```
解释一下 opencv中vector<vector<Point> > contours;
在OpenCV中,contours是一个vector的vector,即每个contour都是一个vector<Point>类型的向量。其中,每个contour表示一组连续的轮廓点,每个轮廓点都是一个2D平面上的点,可以用Point类型表示。因此,contours可以看作是一组2D平面上的点集合,其中每个点集表示一个轮廓。在图像处理中,常常利用contours可以实现轮廓检测、轮廓分割、形状匹配等功能。
阅读全文