在SAM的加持下,我们很容易得到物体的mask,但是物体的bbox信息通常也很有用。那么,我们可以写一个函数,立马可以通过mask得到bbox。
代码如下:
import numpy as npdef mask2bbox(mask):nonzero_indices = np.nonzero(mask) # 获取非零值的索引min_y, min_x = np.min(nonzero_indices, axis=1) # 计算最小的 y 和 x 坐标max_y, max_x = np.max(nonzero_indices, axis=1) # 计算最大的 y 和 x 坐标bbox = [min_x, min_y, max_x, max_y]return bboxif __name__ == "__main__":mask = np.zeros((10, 10))mask[3:7, 4:8] = 1 print("Bounding box:", mask2bbox(mask))