steve8918
steve8918

Reputation: 1860

Converting OpenCV BoundingRect into NumPy array with Python

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?

Upvotes: 4

Views: 2707

Answers (1)

Abid Rahman K
Abid Rahman K

Reputation: 52646

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.

Upvotes: 3

Related Questions