2012-07-09 79 views
1

在OpenCV中,調用cv2.findContours後,我給輪廓的數組。轉換OpenCV的BoundingRect到NumPy的陣列與Python

contours, hierarchy = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 

我想用cv2.boundingRect給我一個定義的輪廓,因爲輪廓可能是複雜的矩形。

for contour in contours: 
    boundRect = cv2.boundingRect(contour) 

然而,這給我一個BoundingRect對象,它的形式爲(X,Y,寬度,高度)的。有沒有一種標準的方法來將其轉換爲標準的NumPy數組,並且已經提供了輔助函數,還是需要手動構建?

回答

2

是的,你必須手動構建這樣一個數組。

可能是,你可以做如下:

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

在我的情況下,最終a過的(166,4)的形狀。

或者你可以使用任何Numpy方法來做到這一點。