C++OpenCV系统学习(12)——轮廓发现(find contour)

目录

1.概述

1.1轮廓发现概念

1.2相关API

2.API参数解释

 2.1.轮廓发现

2.2绘制轮廓

2.3 实现步骤

 3.实验示例


1.概述

1.1轮廓发现概念

轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现的结果

1.2相关API

findContours()发现轮廓

drawContours()绘制轮廓

2.API参数解释

 2.1.轮廓发现

C++OpenCV系统学习(12)——轮廓发现(find contour)_第1张图片

2.2绘制轮廓

C++OpenCV系统学习(12)——轮廓发现(find contour)_第2张图片

2.3 实现步骤

  1. 输入图像转为灰度图像cvtColor

  2. 使用Canny进行边缘提取,得到二值图

  3. 使用findContours寻找轮廓

  4. 使用drawContours绘制轮廓 

 3.实验示例

void MyApi::find_img_contour(Mat& image)
{
	RNG rng;
	Mat dst;
	vector>contours;
	vectorhierarchy;
	Canny(image, dst, 100, 200, 3, false);
	findContours(dst, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));

	Mat drawImage = Mat::zeros(dst.size(), CV_8UC3);
	for (size_t i = 0; i < contours.size(); i++)
	{
		Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
		drawContours(drawImage, contours, i, color, 2, LINE_8, hierarchy, 0, Point(0, 0));
	}
	imshow("轮廓结果", drawImage);
}

C++OpenCV系统学习(12)——轮廓发现(find contour)_第3张图片左边是输入,右边是轮廓的结果 

你可能感兴趣的:(c++opencv图像处理,opencv,c++)