TypeError:参数'color'的标量值在openCV中不是数字

问题描述 投票:0回答:2

这是我的代码

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作为其他实例中的颜色,所以我不确定为什么它在这里有问题。

python opencv numpy
2个回答
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])))


2
投票

centroid_color =元组([int(x)for x in centroid_color])

© www.soinside.com 2019 - 2024. All rights reserved.