質問: cap.read() # 終了処理 cv2.destroyAllWindows() out.release() cap.release() #全フレーム分の検出数がprintされる print(r) ``` ### 試したこと ### 補足情報(FW/ツールのバージョンなど) 引用したコードはWebカメラで顔検出した数を数えるコードです。
回答: ちょっと質問の意図(やりたいこと)が把握できていないかもしれませんが、`__main__`処理というより`変換処理ループ`にて、指定時間が来たらループを抜けるようにしてもよいかと思います。 処理時間のトータルで打ち切りする場合 ``` import time if __name__ == '__main__': # 略 MAX_TIME = 100 # 打ち切り時間(トータルで) [sec] # 変換処理ループ while end_flag == True: # 変換処理。略 # Escキーで終了 key = cv2.waitKey(INTERVAL) if key == ESC_KEY: break # 打ち切り時間が来た if (time.time() - prevTime) >= MAX_TIME: break # 次のフレーム読み込み end_flag, c_frame = cap.read() # 終了処理 ``` 毎処理で打ち切りする場合 ``` import time if __name__ == '__main__': # 略 MAX_TIME = 1 # 打ち切り時間(処理毎に) [sec] # 変換処理ループ while end_flag == True: prevTime = time.time() # 処理開始時間 # 変換処理。略 # 打ち切り時間までに終わらなかった if (time.time() - prevTime) >= MAX_TIME: break # Escキーで終了 key = cv2.waitKey(INTERVAL) if key == ESC_KEY: break # 次のフレーム読み込み end_flag, c_frame = cap.read() # 終了処理 ```