Python OpenCV仅在外部边界上绘制轮廓

Python OpenCV仅在外部边界上绘制轮廓,python,opencv,opencv-drawcontour,Python,Opencv,Opencv Drawcontour,使用OpenCV的drawContours绘制等高线时,边界以等高线为中心绘制,我只想在等高线的外侧绘制边界 此图(取自SketchUp文档)最能说明这一点: 代码>绘制轮廓< /代码>绘制轮廓在第一圆(轮廓是在绘制边界的中间)。我只需要在轮廓的外侧有边界,就像在最后一个圆中一样 有人知道我怎样才能做到这种行为吗 谢谢。将代码用作 _ret, contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.C

使用OpenCV的
drawContours
绘制等高线时,边界以等高线为中心绘制,我只想在等高线的外侧绘制边界

此图(取自SketchUp文档)最能说明这一点:

<>代码>绘制轮廓< /代码>绘制轮廓在第一圆(轮廓是在绘制边界的中间)。我只需要在轮廓的外侧有边界,就像在最后一个圆中一样

有人知道我怎样才能做到这种行为吗

谢谢。

将代码用作

  _ret, contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 
  cv2.drawContours(img,contours , -1, (255,0,0), 1)

此处cv2.RETR_EXTERNAL仅给出外部检测到的轮廓。

假设内芯的颜色始终是均匀的,并且您事先知道芯颜色的值,我们可以简单地按以下方式执行:

#First you draw the contour on both the sides of the border.
contour_id = 0
border_thickness = 10
border_color = (185, 115, 72)
cv2.drawContours(img, contours, contour_id, border_color, border_thickness)

#Now you again draw contour but with thickness = -1 and color = Core color
border_thickness = -1
core_color = (225, 141, 98)
cv2.drawContours(img, contours, contour_id, core_color, border_thickness)

谢谢你的回答,AdityaIntwala,但我说的是绘制轮廓,而不是检测轮廓。你需要为此找到外部轮廓。一旦找到外部轮廓,你可以正常使用drawContours函数绘制找到的外部轮廓。OpenCV没有内置函数来完成此操作。如果您不太关心性能,可以:1)在
mask1
上绘制填充的白色轮廓,2)在
mask2
上放大1,3)
mask3=mask1 XOR mask2
。4) 使用
mask3
将图像中的像素设置为所需的颜色。在绘制轮廓时,是否始终使用颜色均匀的内圈,以及是否有关于内圈颜色的信息?