4

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?

1 Answer 1

3

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.