opencv中findContours的头文件
时间: 2023-11-23 07:55:29 浏览: 166
根据提供的引用内容,无法确定使用的是哪个版本的OpenCV。但是一般情况下,使用OpenCV中的findContours函数需要包含以下头文件:
```cpp
#include <opencv2/opencv.hpp>
```
其中,`opencv2`是OpenCV库的名称,`opencv.hpp`是包含所有OpenCV函数和数据结构的头文件。如果使用的是旧版本的OpenCV,可能需要包含其他的头文件。建议在使用前查看OpenCV的文档或示例代码以确定正确的头文件。
相关问题
findContours c++
findContours是OpenCV库中的一个函数,用于在二值图像中查找轮廓。它可以帮助我们找到图像中的边界,并将其存储为一个向量。在C++中,使用findContours函数需要以下步骤:
1. 首先,确保你已经安装了OpenCV库,并在代码中包含了相应的头文件:
```cpp
#include <opencv2/opencv.hpp>
```
2. 创建一个二值图像,可以通过阈值化、边缘检测等方法得到。
3. 定义一个向量来存储轮廓:
```cpp
std::vector<std::vector<cv::Point>> contours;
```
4. 调用findContours函数来查找轮廓:
```cpp
cv::findContours(binaryImage, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
```
这里的`binaryImage`是输入的二值图像,`contours`是用于存储轮廓的向量。`cv::RETR_EXTERNAL`表示只检测最外层的轮廓,`cv::CHAIN_APPROX_SIMPLE`表示使用简单的轮廓近似方法。
5. 遍历轮廓向量,可以通过循环来访问每个轮廓的点:
```cpp
for (int i = 0; i < contours.size(); i++) {
// 访问第i个轮廓的点
for (int j = 0; j < contours[i].size(); j++) {
cv::Point point = contours[i][j];
// 处理每个点的逻辑
}
}
```
以上就是使用findContours函数查找轮廓的基本步骤。如果你有任何进一步的问题,请随时提问。
C# opencv
C#使用OpenCV的一些代码如下:
1. 需要加头文件
```csharp
using OpenCvSharp;
```
2. 读取图片
```csharp
Mat img1 = new Mat("F:\\all_truck\\truck_3.jpg", ImreadModes.Color);
Cv2.ImShow("win1", img1);
Cv2.WaitKey(0);
```
3. 定义一个没有初始化的图片作为复制
```csharp
Mat pBkImage_copy = new Mat();
pBkImage.CopyTo(pBkImage_copy);
```
4. 灰度化
```csharp
Cv2.CvtColor(img1, img1, ColorConversionCodes.BGR2GRAY);
```
5. 高斯模糊和size数据格式的定义
```csharp
Size ksize = new Size(5, 5);
Cv2.GaussianBlur(img1, img1, ksize, 0);
```
6. 二值化
```csharp
Cv2.Threshold(img1, img1, 128, 255, ThresholdTypes.Binary);
```
7. 开闭运算
```csharp
Mat kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(3, 3));
Cv2.MorphologyEx(img1, img1, MorphTypes.Open, kernel);
```
8. FindContours查找轮廓和contours参数的定义和操作
```csharp
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(img1, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
```
9. Rect和Size格式的定义
```csharp
Rect rect = Cv2.BoundingRect(contours[0]);
Size size = new Size(rect.Width, rect.Height);
```
10. resize函数在图片上画矩形框在图片上画直线
```csharp
Cv2.Rectangle(img1, rect, Scalar.Red, 2);
Cv2.Line(img1, new Point(0, 0), new Point(img1.Width, img1.Height), Scalar.Blue, 2);
```
阅读全文