当我们对一幅图像进行处理时,图像轮廓往往是重要的信息之一。OpenCV提供了方便的接口来提取图像轮廓并进行绘制。以下是OpenCV图像轮廓的绘制方法的完整攻略。
准备工作
在开始之前,需要先安装OpenCV并导入相关库。下面是在Python中导入OpenCV库的示例代码:
import cv2
提取轮廓
OpenCV提供了函数cv2.findContours()
来提取图像中的轮廓。该函数需要处理的参数有输入图像、轮廓提取模式、轮廓逼近方法。
以下是一个示例代码,演示如何提取图像中的所有轮廓:
# 读取输入图像
img = cv2.imread('image.jpg')
# 更改成灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化图像
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 提取轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
在上面的例子中,我们首先读取一张图片,将其转化为灰度图像,然后进行二值化操作,最后通过cv2.findContours()
函数提取轮廓。
绘制轮廓
OpenCV提供了函数cv2.drawContours()
来绘制轮廓。该函数需要处理的参数有输入图像、轮廓、轮廓的索引、颜色(线条颜色和填充颜色)、线条宽度。
以下是一个示例代码,演示如何绘制一个二值化图像中的所有轮廓:
# 绘制轮廓
draw_img = cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
在上面的例子中,我们提供了输入图像,所有提取到的轮廓,轮廓的索引(-1代表全部轮廓),轮廓的颜色(绿色),以及线条的宽度(2)。
下面是另一个示例,演示如何在黑色背景上通过轮廓绘制一张图像:
# 创建黑色背景
img = np.zeros((512, 512, 3), np.uint8)
# 绘制轮廓
draw_img = cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
在上面的例子中,我们首先创建了一个黑色背景,然后在其上绘制了轮廓。
总结
通过使用cv2.findContours()
和cv2.drawContours()
函数,我们可以提取图像中的轮廓并将其绘制出来。在实际的处理中,我们可能还需要对轮廓进行一些操作,比如计算轮廓的面积、周长等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenCV图像轮廓的绘制方法 - Python技术站