假设我有一个像[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情况,我们将不胜感激。