一、引言
在图像处理领域,轮廓是一个非常重要的概念。它能够帮助我们分析物体的形态,计算物体的周长、面积等信息。本文将详细介绍什么是轮廓,如何在 OpenCV 中寻找轮廓以及如何绘制轮廓。
二、什么是轮廓?
轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。与边缘不同,轮廓是连续的,而边缘不一定连续。边缘主要作为图像的特征使用,例如可以用边缘特征区分脸和手;而轮廓主要用于分析物体的形态。可以说,边缘包括轮廓。
三、寻找轮廓
3.1 原理概述
在 OpenCV 中,使用 cv2.findContours()
函数来寻找轮廓。其原理较为复杂,这里简单介绍一下。寻找轮廓需要将图像进行二值化处理,根据图像的不同选择合适的二值化方法,将图像中要绘制轮廓的部分置为白色,其余部分置为黑色。也就是说,需要对原始图像进行灰度化、二值化处理,使目标区域显示为白色,其他区域显示为黑色。
之后,对图像中的像素进行遍历,当一个白色像素相邻(上下左右及两条对角线)位置有黑色像素存在,或者一个黑色像素相邻(上下左右及两条对角线)位置有白色像素存在时,该像素点就会被认定为边界像素点,轮廓就是由无数个这样的边界点组成的。
3.2 cv2.findContours()
函数介绍
该函数的原型为:
contours, hierarchy = cv2.findContours(image, mode, method)