变量正在变为导致ValueError的列表:使用a.any()或a.all()Opencv Python

时间:2016-05-04 12:23:12

标签: python opencv bounding-box

我正在编写一段代码,用于检查围绕形状创建的边界矩形是否位于另一个固定矩形内。这是存在错误的代码部分:

rectangle = cv2.rectangle(frame, (150, 50), (450, 400), (0, 255, 0), 2)

if ID != -1:
    cnt = contours[ID]
    x, y, w, h = cv2.boundingRect(cnt)
    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    x2 = x+w
    y2 = y+h

if x > 150:
    if y > 50:
        if x2 < 450:
            if y2 < 400:
                print "inside"

N.B代码的前一部分找到最大的轮廓并在其周围绘制一个边界矩形。这部分工作正常,我只是想在一些背景下提及它。

我得到的错误是:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

问题是,程序工作了一段时间,当形状在矩形内部时成功打印。但是一段时间后程序崩溃并显示错误消息。

由此我认为变量x由于某种原因正在转换为列表,因为这是错误发生的行。

有人知道如何解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

Kevin和Gareth指出,这是一个缩进错误。当ID为-1时,x未被赋予任何值(与y,x2,y2相同)。