【问题标题】:open cv, img[x,y] always returning 0打开 cv,img[x,y] 总是返回 0
【发布时间】:2016-12-08 00:32:34
【问题描述】:

我在这样的图像中得到对象的质心:

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

【问题讨论】:

    标签: python opencv computer-vision opencv3.0


    【解决方案1】:

    openCv numpy 结构中的图像是一个 3D 矩阵。 要获得坐标 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 x 480 的图像中,您肯定必须使用 img[y,x],因为坐标首先给出 x,但矩阵首先需要行。

    value = img[row,column]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多