List<MatOfPoint> contours = new ArrayList<>(); 遍历
时间: 2023-08-04 13:11:49 浏览: 52
遍历 `contours` 中的所有元素的代码可以使用 Java 的 for-each 循环实现,示例代码如下:
```
for (MatOfPoint contour : contours) {
// 在这里对每个 contour 进行操作
}
```
这段代码会将 `contours` 中的每个元素都赋值给 `contour` 变量,然后在循环体中对其进行操作。注意,`contour` 的类型是 `MatOfPoint`,即一个由点组成的矩阵。你可以通过 `contour.toArray()` 方法获取矩阵中的所有点,进而对它们进行处理。
相关问题
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;
}
```
其中的vector<vector<Point>> contours;什么意思
`vector<vector<Point>> contours` 是一个存储轮廓的容器,其中每个轮廓都是一个由 `Point` 类型点组成的向量,因此 `vector<Point>` 表示一个轮廓,而 `vector<vector<Point>>` 表示多个轮廓的集合。在图像处理中,轮廓是图像中一些特定形状的边界线,可以用来做形状识别、物体检测等任务。在使用 OpenCV 进行轮廓检测时,检测结果会以 `vector<vector<Point>>` 的形式返回,其中每个轮廓是一个 `vector<Point>` 类型的向量,每个点表示轮廓上的一个像素点。