Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 775
steve8918 Avatar asked Sep 05 '25 03:09

steve8918


1 Answers

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.

like image 159
Abid Rahman K Avatar answered Sep 07 '25 21:09

Abid Rahman K