这是我的代码
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作为其他实例中的颜色,所以我不确定为什么它在这里有问题。
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])))
centroid_color =元组([int(x)for x in centroid_color])