2016-12-08 49 views
0

我得到對象的質心圖像中是這樣的:開放CV,IMG [X,Y]總是返回0

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

    _, contours, _ = cv2.findContours(gray.copy(), cv2.RETR_CCOMP, cv2.CHAIN_APPROX_TC89_L1) 

    centres = [] 
    for i in range(len(contours)): 
     moments = cv2.moments(contours[i]) 
     centres.append((int(moments['m10']/moments['m00']), int(moments['m01']/moments['m00']))) 

我遍歷中心,並試圖讓每個中心像素的顏色。出於某種原因,所有的回報是0,0,0

for c in centres: 
    print img[c] 

我也得到這個錯誤

IndexError: index 484 is out of bounds for axis 0 with size 480 

回答

1

圖片到OpenCV的numpy的結構是一個三維矩陣。 要在座標x的像素的強度,Y(記住,y是行),你必須做到這一點(灰度圖像)

intensity = img[y,x] 

當我讀了你的錯誤路線,我認爲這是你的獨特的錯誤。

要有顏色(在BGR),你必須寫類似

blue = img[y,x,0] 
green = img[y,x,1] 
red = img[y,x,2] 

你應該檢查它是否是您的情況使用

print c 

,看看什麼是中心座標。如果你得到的東西lixe

C(X,Y)= 484,300

在640×480的圖像

,可以肯定的是,你必須使用img[y,x]因爲座標給X第一,但矩陣首先需要行。

value = img[row,column]