使用Python将OpenCV BoundingRect转换为NumPy数组

时间:2012-07-09 14:14:51

标签: python opencv numpy

在OpenCV中,在调用cv2.findContours之后,我给出了一系列轮廓。

contours, hierarchy = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

我想使用cv2.boundingRect为我提供一个定义轮廓的矩形,因为轮廓可能很复杂。

for contour in contours:
   boundRect = cv2.boundingRect(contour)

然而,这给了我一个BoundingRect对象,其形式为(x,y,width,height)。有没有一种标准方法可以将它转换为带有已经提供的辅助函数的标准NumPy数组,还是需要手动构建它?

1 个答案:

答案 0 :(得分:2)

是的,您必须手动构建这样的数组。

可能,你可以这样做:

>>> a = np.empty((0,4))
>>> for con in cont:
        rect = np.array(cv2.boundingRect(con)).reshape(1,4)
        a = np.append(a,rect,0)

就我而言,最终a的形状为(166,4)

或者您可以使用任何Numpy方法来执行此操作。