图像分割时很多模型给出的都是mask图像,为了方便转换为ROI,这里提供一段python代码基于mask提取contour坐标。
import cv2import numpy as np
def get_outlines(masks): outpix = [] for n in np.unique(masks)[1:]: mn = masks == n if mn.sum() > 0: contours = cv2.findContours(mn.astype(np.uint8), mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_NONE) contours = contours[-2] cmax = np.argmax([c.shape[0] for c in contours]) pix = contours[cmax].astype(int).squeeze() if len(pix) > 4: outpix.append(pix) else: outpix.append(np.zeros((0, 2))) return outpix