我正在编写一段代码,用于检查围绕形状创建的边界矩形是否位于另一个固定矩形内。这是存在错误的代码部分:
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
由于某种原因正在转换为列表,因为这是错误发生的行。
有人知道如何解决这个问题吗?感谢。
答案 0 :(得分:0)
Kevin和Gareth指出,这是一个缩进错误。当ID为-1时,x未被赋予任何值(与y,x2,y2相同)。