Converting OpenCV BoundingRect into NumPy array with Python

numpy, opencv, python

Solution

Yes, you will have to construct such an array manually.

May be, you can do as follows :

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

In my case, final `a` had a shape of `(166,4)`.

Or you can use any Numpy methods to do so.

Problem

In OpenCV, after calling cv2.findContours, I'm given an array of contours. ``` contours, hierarchy = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) ``` I want to use cv2.boundingRect to give me a rectangle that defines the contour, since the contour could be complex. ``` for contour in contours: boundRect = cv2.boundingRect(contour) ``` However, this gives me a BoundingRect object, which is of the form (x, y, width, height). Is there a standard way to convert this into a standard NumPy array with a helper function that is already provided, or do I need to construct this manually?

Original source