Python: Print only one time inside a loop

我与影子孤独终老i 提交于 2019-12-04 14:49:28
import numpy as np
import cv2
import logging as log

cap = cv2.VideoCapture('5.mpg')
hasOpened = False

while True:

    ret, image = cap.read()

    if ret and not hasOpened:
        log.warning('Camera Opened Successfully')
        hasOpened = True

If you want to break out of the loop after printing, follow Matt's answer. This option will continue in the loop and only print once.

Add an extra boolean to track whether you have printed it out before:

import numpy as np
import cv2
import logging as log

cap = cv2.VideoCapture('5.mpg')
printed = False

while True:

    ret, image = cap.read()

    if ret == True and not printed:
        log.warning('Camera Opened Successfully')
        printed = True

You must break out of the loop

import numpy as np
import cv2
import logging as log

cap = cv2.VideoCapture('5.mpg')

while True:

    ret, image = cap.read()

    if ret == True:
        log.warning('Camera Opened Successfully')
        break

You need to break the while loop, also since you would like to break out of the loop as soon as you get ret True you can use:

ret = False
while not ret:

    ret, image = cap.read()

    if ret:
        log.warning('Camera Opened Successfully')
    # any other code

Set a flag to trigger the log and then make it false. ret is to be made False when you are ready to exit the loop so that it will exit

import numpy as np
import cv2
import logging as log

cap = cv2.VideoCapture('5.mpg')
ret = True
logit = True
while ret:

    ret, image = cap.read()

    if logit == True:
        log.warning('Camera Opened Successfully')
        logit = False

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    clahe = cv2.createCLAHE(clipLimit = 15.0, tileGridSize=(8,8))
    gray1 = clahe.apply(gray)
    // process remainder of situation setting 

Assuming you want to use your main loop to handle your application logic, and it doesn't make sense to have one loop for detecting if it is opened and another for working with it then I think what you want is to set a variable to determine if the state has changed.

import numpy as np
import cv2
import logging as log

cap = cv2.VideoCapture('5.mpg')
old_ret = False

while True:

    ret, image = cap.read()

    if old_ret == False and ret == True:
        old_red = True
        log.warning('Camera Opened Successfully')

    if ret == True:
        # Do other things that need the camera but no log
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!