目录
一、轮廓的绘制的作用
二、内容介绍
三、代码实现
一、轮廓的绘制的作用
- 用于图形分析和处理:轮廓是图像中物体边界的描绘,通过绘制轮廓,我们可以更好地分析和理解图像中的物体和形状。例如,轮廓可用于识别和区分不同的对象、测量物体的面积和周长等。
- 辅助机器视觉和物体识别:轮廓可以帮助计算机视觉系统(如机器人、自动驾驶车辆等)更好地识别和理解其环境。例如,通过轮廓,系统可以识别出不同的人、物体或道路标志。
- 特征提取:轮廓还可以用于特征提取,以供后续处理或分析使用。例如,可以通过测量轮廓的曲率、拐角等特征来识别不同的人或物体。
- 目标跟踪和监控:在视频或动态图像中,通过绘制和跟踪轮廓,可以帮助监测和跟踪目标对象的位置和移动轨迹。
- 动画制作:在计算机图形学和动画制作中,轮廓可以用于建模、角色动画等,帮助生成更为逼真的动画效果。
二、内容介绍
使用参数介绍:
cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)
image:要在其上绘制轮廓的输入图像。
contours:轮廓列表,通常由cv2.findContours()函数返回。
contourIdx:要绘制的轮廓的索引。如果为负数,则绘制所有轮廓。
color:轮廓的颜色,以BGR格式表示。例如,(0, 255, 0)表示绿色。
thickness:轮廓线的粗细。默认值为1。
lineType:轮廓线的类型。默认值为cv2.LINE_8。
hierarchy:轮廓层次结构。通常由cv2.findContours()函数返回。
maxLevel:绘制的最大轮廓层级。默认值为None,表示绘制所有层级。
offset:轮廓点的偏移量。默认值为None。
三、代码实现
图片:手机
完整代码:
phone = cv2.imread('R-C.png')
phone = cv2.resize(phone, (640, 480))
phone_gray = cv2.cvtColor(phone, cv2.COLOR_BGR2GRAY) # 灰度图的处理
ret, phone_binary = cv2.threshold(phone_gray, 120, 255, cv2.THRESH_BINARY) # 阈值处理为二值
cv2.imshow('phone_binary', phone_binary)
cv2.waitKey(100000)
image, contours, hierarchy = cv2.findContours(phone_binary, cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
image_copy = phone.copy()
image_copy = cv2.drawContours(image=image_copy, contours=contours, contourIdx=-1, color=(0, 255, 0), thickness=3)
cv2.imshow('Contours_show', image_copy)
cv2.waitKey(0)
其中,image_copy前的代码的目的是进行轮廓检测,详细点击笔者的opencv--图像轮廓的近似检测
结果: