[英]time.sleep for only a part of the code inside infinite while loop
我正在使用通過OpenCV分析實時流中的幀的代碼,如果滿足條件,則將當前幀保存到文件中。
用於逐幀分析視頻的無限循環如下所示:
while True:
ret,frame = stream.read()
if conditionisMet :
pil_image = Image.fromarray(frame)
pil_image.save("/path/to/folder/image.jpg")
cv2.imshow("LiveStream", frame)
我要補充的是,如果再次過快地滿足條件(20-30秒),則不必保存圖像,而while循環必須獲取另一幀並繼續其工作。 我已經嘗試在if語句中使用time.sleep(30.0)
,但是它阻塞了while循環,等待30秒過去。 在這種情況下,是否可以使用time.sleep
或其他適合我需要的方法?
提前致謝
您可以執行以下操作:
last_grab=time.time()-30 # this to get things started
while True:
if condition and time.time()-last_grab > 30:
last_grab=time.time()
# Do things here
else:
continue
只需添加一個變量來跟蹤您的上次保存時間:
last_save_time = time.time()
while True:
ret,frame = stream.read()
if conditionisMet and time.time() - last_save_time() > 20:
pil_image = Image.fromarray(frame)
pil_image.save("/path/to/folder/image.jpg")
# update last save time
last_save_time = time.time()
cv2.imshow("LiveStream", frame)
為什么不只是捕獲運行時間,如果大於給定時間,則保存圖像。
a = dt.now()
b = dt.now()
c = b - a
if c < x:
do something
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.