pythonloopsopencv3.0

Python: Print only one time inside a loop


I have a code where I want capture a video from a camera. I want to use Logging library of Python to get messages on the shell or export them to a text file.

Here is a part of my code where inside the while loop I want to print Camera Opened Successfully

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')

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    clahe = cv2.createCLAHE(clipLimit = 15.0, tileGridSize=(8,8))
    gray1 = clahe.apply(gray)

but what I get in the shell is this:

until I terminated the running script. Any idea on how to make it print only once.


Solution

  • 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.