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.
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.
You must break out of the loop
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
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.
Add an extra boolean to track whether you have printed it out before:
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: