Python 查找和绘制边界框

Python 查找和绘制边界框,python,opencv,scikit-image,bounding-box,Python,Opencv,Scikit Image,Bounding Box,我目前有一个2D值数组。我目前正试图找到它的区域,其值明显不同,并在其周围绘制边界框 目前,我已经使用scikit图像来设置我的阈值,方法是 from skimage import filters val = filters.threshold_otsu(zo) mask = zo < val 现在,使用这个,我想在两组Trues的周围各画一个矩形。然而,我发现很难做到这一点。OpenCV似乎能够使用函数cv2.boundingRect()简单地执行这样的操作(请参见:)。然而,由于我的

我目前有一个2D值数组。我目前正试图找到它的区域,其值明显不同,并在其周围绘制边界框

目前,我已经使用scikit图像来设置我的阈值,方法是

from skimage import filters
val = filters.threshold_otsu(zo)
mask = zo < val
现在,使用这个,我想在两组
Trues
的周围各画一个矩形。然而,我发现很难做到这一点。OpenCV似乎能够使用函数cv2.boundingRect()简单地执行这样的操作(请参见:)。然而,由于我的原始对象不是图像,所以我不使用它


Python中有没有一个简单的函数来计算边界框的面积(有点像cv2.boundingRect()),或者有没有一种方法可以将上面的2d矩阵传递给OpenCV,以便直接使用它?

这里有一个示例,用于绘制scikit图像库中区域的边界框:

你需要两件事:

(1) 您的区域,以便它们是两个不同的区域。ie上面的图像将变成:

[[0, 1, 1, 0],
 [0, 1, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 2]]
(2) 使用和
props.bbox
查找每个区域的边界框,然后可以使用该边界框在matplotlib或您选择的软件中绘制


因此,在中,搜索“label”和“bbox”以查看用法示例。

T和F可能表示为1和0。因此,您的数组应该只是一个凹凸的数组,OpenCv可以对其进行操作。然后你需要得到轮廓,从轮廓中得到边界框。这正是我想要的-谢谢!
[[0, 1, 1, 0],
 [0, 1, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 2]]