2016-01-22 60 views
0

数字下面是我的代码类型错误:为了论证“颜色”,标量值是不是在OpenCV中

im = cv2.imread('luffy.jpg') 
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 
ret,thresh = cv2.threshold(gray,127,255,0) 

contours,h = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 

for cnt in contours: 
    moment = cv2.moments(cnt) 
    c_y = moment['m10']/(moment['m00']+0.01) 
    c_x = moment['m01']/(moment['m00']+0.01) 
    centroid_color = im[c_x,c_y] 
    centroid_color = np.array((centroid_color[0],centroid_color[1],centroid_color[2])) 
    print type(centroid_color) 
    cv2.fillPoly(im,cnt,centroid_color) 

我收到的最后一行,我尝试过centroid_color到色彩的说法是错误。这是<type 'numpy.ndarray'>,我已经能够在这个数据类型成功地传递到cv2.fillPoly在其他情况下的颜色,所以我不知道为什么它是这里有问题。

回答

2

fillPoly()预计可迭代,即放在括号中的CNT。我相信这是https://stackoverflow.com/a/17582850/5818240的重复。

此外,您centroid color变量包含字符串。你需要将它们转换为整数。

centroid_color = np.array((int(centroid_color[0]),int(centroid_color[1]),int(centroid_color[2])))

+0

生病检查一出。把CNT括号内并没有改变/修复错误 – BigBoy1337

+0

我看到,有什么不对的'centroid_color'。 (int(centroid_color [0]),int(centroid_color [1]),int(centroid_color [2])))'np.array –

相关问题