【问题标题】:Filling contour won't work using drawContours() thickness=-1 [duplicate]使用drawContours()厚度=-1填充轮廓不起作用[重复]
【发布时间】:2019-03-08 05:47:48
【问题描述】:

我正在尝试填充通过分别对 3 个颜色通道进行阈值处理获得的轮廓。

image_original = cv2.imread(original_image_path)
image_contours = np.zeros((image_original.shape[0], image_original.shape[1], 1), dtype=np.uint8)
image_contour = np.zeros((image_original.shape[0], image_original.shape[1], 1), dtype=np.uint8)
image_binary = np.zeros((image_original.shape[0], image_original.shape[1], 1), dtype=np.uint8)
image_area = image_original.shape[0] * image_original.shape[1]
for channel in range(image_original.shape[2]):
    ret, image_thresh = cv2.threshold(image_original[:, :, channel], 120, 255, cv2.THRESH_OTSU)
    _, contours, hierarchy = cv2.findContours(image_thresh, 1, 1)
    for index, contour in enumerate(contours):
        if( cv2.contourArea( contour )  > image_area * background_remove_offset ):
            del contours[index]
    cv2.drawContours(image_contours, contours, -1, (255,255,255), 3)
_, contours, hierarchy = cv2.findContours(image_contours,  cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(image_contour, max(contours, key = cv2.contourArea), -1, (255, 255, 255), 1)
cv2.imwrite(output_contour_image_path, image_contour)
cv2.drawContours(image_binary, max(contours, key = cv2.contourArea), -1, (255, 255, 255), thickness=-1)
cv2.imwrite(output_binary_image_path, image_binary)
cv2.imshow("binary", image_binary)

这应该通过设置厚度=-1来工作,但它只绘制了与厚度=1相同的1厚度的轮廓,特别是在下一行中。

cv2.drawContours(image_binary, max(contours, key = cv2.contourArea), -1, (255, 255, 255), thickness=-1)

结果如下,

这应该是一个二进制填充图像而不是一个只有厚度=1的轮廓

【问题讨论】:

  • 同样的原因,同样的解决方案。症状只是看起来有点不同。

标签: python-3.x opencv computer-vision opencv3.0 opencv-contour


【解决方案1】:

好吧,解决了它似乎 drawContours() 函数需要轮廓作为列表类型,只需更改行

cv2.drawContours(image_binary, max(contours, key = cv2.contourArea), -1, 255, thickness=-1)

cv2.drawContours(image_binary, [max(contours, key = cv2.contourArea)], -1, 255, thickness=-1)

解决它。

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多