Extraer áreas detectadas por el MSER (Python, OpenCV)

No puedo extraer las regiones detectadas por MSER en esta imagen:

img

Lo que quiero hacer es guardar las áreas verdes delimitadas. Mi código actual es este:

import cv2 import numpy as np mser = cv2.MSER_create() img = cv2.imread('C:\\Users\\Link\\img.tif') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) vis = img.copy() regions, _ = mser.detectRegions(gray) hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions] cv2.polylines(vis, hulls, 1, (0, 255, 0)) mask = np.zeros((img.shape[0], img.shape[1], 1), dtype=np.uint8) mask = cv2.dilate(mask, np.ones((150, 150), np.uint8)) for contour in hulls: cv2.drawContours(mask, [contour], -1, (255, 255, 255), -1) text_only = cv2.bitwise_and(img, img, mask=mask) cv2.imshow('img', vis) cv2.waitKey(0) cv2.imshow('mask', mask) cv2.waitKey(0) cv2.imshow('text', text_only) cv2.waitKey(0) 

El resultado esperado debe ser un ROI como imagen.

afuera

Imagen de origen:

src

Solo obtenga el cuadro delimitador para cada contorno, utilícelo como ROI para extraer el área y guárdelo:

 for i, contour in enumerate(hulls): x,y,w,h = cv2.boundingRect(contour) cv2.imwrite('{}.png'.format(i), img[y:y+h,x:x+w])