Python: Drucken Sie nur ein mal innerhalb einer Schleife
Ich habe einen code wo ich möchte ein video aufnehmen von der Kamera. Ich möchte Logging-Bibliothek von Python, um Nachrichten auf der shell oder exportieren Sie Sie in eine Textdatei.
Ist hier ein Teil von meinem code, wo innerhalb der while-Schleife will ich drucken Kamera Erfolgreich Geöffnet
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)
aber was bekomme ich in der shell wird dies:
bis ich das beendet das laufende Skript. Irgendeine Idee auf, wie man es drucken nur einmal.
- Ähm, verwenden Sie ein
if
- Anweisung. - Seite-Hinweis: verwenden Sie Niemals
if ret == True:
. Verwenden Sie einfachif ret:
; es ist mehr Pythonic (sowie präziser und immer so etwas schneller). Wenn Sie wirklich brauchen, um zu testen, fürTrue
speziell, und nicht eine andere truthy Wert, würden Sie wollenif ret is True:
, die im Gegensatz zuif ret == True:
, nicht behandelnret
Werte1
,1.0
usw. gleichTrue
. Aber Sie selten sogar wünschen, prüfen Sie einfachif ret:
. Gleiches gilt fürret == False
; Sie will fast immernot ret
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, brechen aus der Schleife, nach dem drucken, Folgen Sie Matt ' s Antwort. Diese option wird auch weiterhin in der Schleife und drucken nur einmal.
Fügen Sie ein zusätzliches boolean, um zu verfolgen, ob Sie es ausgedruckt vor:
Müssen Sie brechen aus der Schleife
Müssen Sie brechen die while-Schleife, da Sie gerne brechen aus der Schleife, sobald Sie
ret
Wahr, die Sie verwenden können:Setzen Sie ein flag zum auslösen des log und dann machen Sie es falsch. ret ist Falsch, wenn Sie bereit sind, beenden Sie die Schleife, so dass es verlassen
Angenommen, Sie möchten, verwenden Sie Ihre Haupt-Schleife, um Ihre Anwendungslogik, und es macht keinen Sinn, eine Schleife für die Erkennung von wenn es geöffnet und ein weiteres für das arbeiten mit ihm ist, dann denke ich, was Sie wollen, ist, um eine variable festzulegen, um zu bestimmen, wenn sich der Zustand geändert hat.