【发布时间】:2018-12-26 21:38:29
【问题描述】:
我有一个代码,它由for 循环中的if 语句组成,如下所示,
for i in range(len(contours)):
x, y, w, h = cv2.boundingRect(contours[i])
mask[y:y+w, x:x+w] = 0
cv2.drawContours(mask, contours, i, (255, 255, 255), -1)
r = float(cv2.countNonZero(mask[y:y+h, x:x+w])) / (w * h)
if r > 0.5 and w > 8 and h > 8:
cv2.rectangle(rgb, (x, y), (x+w, y+h), (255, 255, 255), -1)
cv2.circle(rgb, (x+w/2,y+h/2), 3, (180, 25, 20), -1)
start_target_states = x+w/2 , y+h/2
print "start_target_states: %s" % (start_target_states,)
运行这段代码,结果如下;
start_target_states: (704, 463)
start_target_states: (83, 15)
但是,start_target_states 变量必须命名为start_state 才能获得第一个结果,之后必须将其命名为target_state 才能获得第二个结果。例如;
target_state: (704, 463)
start_state: (83, 15)
此外,我想将这两个元组分配给变量名。这样我以后可以使用它们。我的意思是,
TargetState = target_state
StartState = start_state
我试图修改 if 语句以达到我的目的,不幸的是我无法成功。我怎样才能做我想做的事?
【问题讨论】:
-
在
if条件下是否总是只打印两个值? -
已编辑:可能会因图像而改变。但是现在,是的,我只得到两个值。此外,当我在
if条件之外使用print函数时,我会获得更多价值。总而言之,我需要两个值,如上所述,必须指定为变量名。
标签: python opencv if-statement image-processing opencv-drawcontour