如何使用轮廓保存 OpenCV 图像

Yan*_*ang 5 python cv2

我想用轮廓保存图像

这是我的代码:

img = cv2.imread('123.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
image, contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for cnt in contours:
    # some code in here
    cv2.imwrite('234.jpg', cnt)
Run Code Online (Sandbox Code Playgroud)

非常感谢。

Ken*_*Y-N 5

您要做的是创建一个蒙版,在其上绘制轮廓,然后用它剪掉图片的其余部分,反之亦然。例如,基于本教程

(contours, _) = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
mask = np.ones(img.shape[:2], dtype="uint8") * 255

# Draw the contours on the mask
cv2.drawContours(mask, contours, -1, 0, -1)

# remove the contours from the image and show the resulting images
img = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("Mask", mask)
cv2.imshow("After", img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)