Reputation: 1860
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
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