使用 openCV-python 将两个轮廓分割成两个相同大小的不同图像

我在第一张图像中有两个轮廓。

http://img3.mukewang.com/613c522100017c6806970932.jpg

我需要分割出单个轮廓并像这样制作两个图像:

http://img2.mukewang.com/613c522b0001dab606990930.jpg

http://img1.mukewang.com/613c523b000122b606990934.jpg

。单个输出图像必须与输入图像具有相同的尺寸。如何使用 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)


慕田峪4524236
浏览 133回答 1
1回答

大话西游666

您正在cv2.drawContours以错误的方式使用 。传递-1as 轮廓索引将绘制所有轮廓而不是单个轮廓。要绘制单个轮廓,您需要将相应的索引传递为:_, 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python