Сегментирование двух контуров на два разных изображения одинакового размера с использованием openCV-python - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть два контура в первом изображении .Мне нужно сегментировать отдельные контуры и сделать из них два изображения, например: image1 и image2 .Индивидуальное выходное изображение должно быть того же размера, что и входное изображение.Как этого можно добиться с помощью openCV-python?Мой код для рисования контуров:

    image, contours, hier = cv2.findContours(im, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    for c in contours:
    rect = cv2.minAreaRect(c)
    box = cv2.boxPoints(rect)
    # convert all coordinates floating point values to int
    box = np.int0(box)
    # draw a red 'nghien' rectangle
    cv2.drawContours(im, [box], 0, (0, 0, 255))
    cv2.drawContours(im, contours, -1, (255, 255, 0), 1)

1 Ответ

0 голосов
/ 08 декабря 2018

Вы используете cv2.drawContours неправильно.Передача -1 в качестве индекса контура будет рисовать все контуры, а не отдельные.Чтобы нарисовать отдельные контуры, необходимо передать соответствующий индекс как:

_, cnt, hierarchy = cv2.findContours(canvas.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for i in xrange(len(cnt)):
    output_canvas = np.zeros(canvas.shape, dtype=np.uint8)
    cv2.drawContours(output_canvas, cnt, i, np.array([255, 255, 255, 255]), -1)
    cv2.imwrite("./contour{}.png".format(i), output_canvas)
...