2016-12-08 5 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] 

で何らかの理由で私はまた、OpenCVのnumpyの構造の中にこのエラー

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

答えて

1

画像を取得した3Dマトリックスです。 Y(行であることyのを覚えている)あなたは(グレースケール画像で)これを実行する必要が

intensity = img[y,x] 

、座標xの画素に強さを持っていると私はあなたのエラー行を読んだとき、私はそれがあなただと思うしユニークなミス。あなたはそれが

print c 

を使用することによって、あなたの状況であるかどうかを確認し、中心座標が何であるかを確認する必要があり

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

のようなものを書かなければならない(BGR)で色を持つように

。あなたは

C(X、Y)= 484、640×480の画像で300

lixe何かを得る場合、あなたが座標が最初のxが、行列を与えるのでimg[y,x]を使用するように持っていることを確認しています最初に行が必要です。

value = img[row,column] 
関連する問題