如何从3D二进制图像获取中心坐标?

时间:2018-10-09 01:59:29

标签: python 3d

假设我有一个像[100,100,100]这样的二进制3D numpy数组,如何找到每个非零区域的最小bbox?这是二维示例:

def get_coordinates_new(mask_name):
    coordinates = []
    gray = cv2.imread(mask_name, cv2.IMREAD_GRAYSCALE) 
    ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
    contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

    for n, contour in enumerate(contours):
        contour = np.squeeze(contour)
        if len(contour.shape) == 1:
            continue
        coordinate = []
        xmin = np.min(contour[:, 0])
        xmax = np.max(contour[:, 0])
        ymin = np.min(contour[:, 1])
        ymax = np.max(contour[:, 1])
        coordinate.append(xmin)
        coordinate.append(ymin)
        coordinate.append(xmax)
        coordinate.append(ymax)
        coordinates.append(coordinate)

    return coordinates,contours

我发现了一个类似的问题:bounding box of numpy array 但是,当图像中的区域大于一个非零区域时,它们将无法处理这种情况。因此,如何将此方法扩展到3D情况,我们将不胜感激。

0 个答案:

没有答案