Что вам нужно сделать, это продолжать обнаруживать и считать одновременно.Вы можете сделать что-то вроде этого:
found_top = False
found_bottom = False
while True:
# do detection
if moments['m00'] > 0:
x = int(moments['m10'] / moments['m00'])
y = int(moments['m01'] / moments['m00'])
if x > 0 and x <=640 and y > 0 and y <=240: #if it detects the object in the upper part
if not found_top:
found_top = True
t0 = time.time()
# Do proper check if object appears at the bottom
else:
found_top = False
found_bottom = False
t1 = time.time()
if found_top and (t1-t0) >= 5sec: # need to check proper way to do it
# Do your action
Еще одна вещь, которую следует учитывать, состоит в том, что на изображениях OpenCV положительная ось y идет вниз, а не вверх.(0,0) - верхний левый угол изображения
0/0---X--->
|
|
Y
|
|
v