OpenCV VideoCapture in Python: Immer den neuesten Frame erhalten
English
Deutsch
Wenn Sie mit der OpenCV-Videoaufzeichnung arbeiten, aber nur gelegentlich Bilder verwenden, erhalten Sie ältere Bilder aus dem Aufzeichnungspuffer.
Dieses Code-Beispiel löst dieses Problem, indem ein separater Aufzeichnungs-Thread gestartet wird, der kontinuierlich Bilder in einen temporären Puffer speichert.
Daher können Sie immer das neueste Bild aus dem Puffer abrufen. Der Code basiert auf unserem Basis-Beispiel Webcam-Bild mit OpenCV in Python aufnehmen
opencv_latest_frame.py
video_capture = cv2.VideoCapture(0)
video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
if not video_capture.isOpened():
raise Exception("Could not open video device")
class TakeCameraLatestPictureThread(threading.Thread):
def __init__(self, camera):
self.camera = camera
self.frame = None
super().__init__()
# Thread starten
self.start()
def run(self):
while True:
ret, self.frame = self.camera.read()
latest_picture = TakeCameraLatestPictureThread(video_capture)Verwendungsbeispiel:
opencv_latest_frame_usage.py
# Neuestes Bild in den korrekten Farbraum konvertieren
rgb_img = cv2.cvtColor(latest_picture.frame, cv2.COLOR_BGR2RGB)
# Anzeigen
plt.imshow(rgb_img)Check out similar posts by category:
Audio/Video, OpenCV, Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow