Einführung
Willkommen in diesem Lab, in dem Sie lernen, wie Sie mit Videos in OpenCV-Python beginnen können! OpenCV (Open Source Computer Vision) ist eine leistungsstarke Bibliothek, die für Bildverarbeitung, maschinelles Lernen und Anwendungen in der Computervision entwickelt wurde. In diesem Lab werden wir uns darauf konzentrieren, wie man mit Videos in OpenCV-Python arbeitet.
Video lesen und einen Frame speichern
Um ein Video aufzunehmen, müssen Sie ein VideoCapture-Objekt erstellen. Hier ist ein Beispiel, wie Sie ein Video lesen und jeden Frame in den frame-Ordner speichern:
Der Videopfad lautet /home/labex/project/video.mp4
Der Dateipfad lautet /home/labex/project/read_video.py
Öffnen Sie die Datei read_video.py. Geben Sie dann den folgenden Code ein.
import cv2
import os
## Check if the 'frame' folder exists. Create it if it doesn't.
folder = os.path.exists('frame')
if not folder:
os.makedirs('frame')
print('new folder...')
print('OK')
else:
print('There is this folder!')
## Frame number
number = 0
## Create a VideoCapture object
cap = cv2.VideoCapture('video.mp4')
while True:
## Read a frame from the video
ret, frame = cap.read()
## Frame number added
number = number + 1
if ret:
## Save the frame
cv2.imwrite(f"./frame/save{number}.jpg", frame)
## Exit the loop
else:
break
print('Each frame has been saved to the frame folder')
print('Video read successfully!')
## Release the VideoCapture object
cap.release()
In diesem Beispiel erstellen wir ein VideoCapture-Objekt, indem wir den Pfad zur Videodatei übergeben, die wir lesen möchten. Anschließend verwenden wir eine while-Schleife, um jeden Frame des Videos mit der read()-Methode zu lesen. Wenn der Frame erfolgreich gelesen wurde, verwenden wir die imwrite()-Methode, um den Frame zu speichern. Schließlich geben wir das VideoCapture-Objekt frei.
Sie können den folgenden Befehl im Terminal ausführen.
python /home/labex/project/read_video.py
Oder Sie können einfach auf die Schaltfläche wie diese
in der oberen rechten Ecke klicken, um es auszuführen.
Warten Sie anschließend darauf, dass das Terminal "Video read successfully!" ausgibt, und Sie werden die Bilder jedes Frames im frame-Ordner sehen.
Video schreiben und speichern
Um ein Video zu schreiben und zu speichern, müssen Sie ein VideoWriter-Objekt erstellen. Hier ist ein Beispiel, wie Sie ein Video schreiben und speichern können:
Der Videopfad lautet /home/labex/project/video.mp4
Der Dateipfad lautet /home/labex/project/write_video.py
Öffnen Sie die Datei write_video.py. Geben Sie dann den folgenden Code ein.
import cv2
## Create a VideoCapture object
cap = cv2.VideoCapture('video.mp4')
## Get the video frame size and frame rate
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
## Create a VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))
while True:
## Read a frame from the video
ret, frame = cap.read()
if ret:
## Process the frame
#...
## Write the processed frame to the output video
out.write(frame)
else:
break
print('Video save successfully!')
## Release the VideoCapture and VideoWriter objects
cap.release()
out.release()
In diesem Beispiel erstellen wir ein VideoCapture-Objekt, indem wir den Pfad der zu lesenden Videodatei übergeben. Dann erhalten wir die Videoframegröße und die Bildrate mit der get()-Methode. Als Nächstes erstellen wir ein VideoWriter-Objekt, indem wir den Namen der Ausgabedatei, den fourcc-Code, die Bildrate und die Framegröße übergeben. Der fourcc-Code ist ein vier-Byte-Code, der verwendet wird, um den Videocodec anzugeben. In diesem Beispiel verwenden wir den XVID-Codec.
Anschließend verwenden wir eine while-Schleife, um jeden Frame des Videos mit der read()-Methode zu lesen. Wenn der Frame erfolgreich gelesen wurde, verarbeiten wir ihn (z.B. wenden wir Filter an) und schreiben ihn in das Ausgabevideo mit der write()-Methode des VideoWriter-Objekts. Schließlich geben wir die VideoCapture- und VideoWriter-Objekte frei.
Sie können den folgenden Befehl im Terminal ausführen.
python /home/labex/project/write_video.py
Oder Sie können einfach auf die Schaltfläche wie diese
in der oberen rechten Ecke klicken, um es auszuführen.
Warten Sie anschließend darauf, dass das Terminal "Video save successfully!" ausgibt, und Sie werden ein Ausgabevideo namens output.avi im Projektordner sehen. Die aktuelle Umgebung unterstützt jedoch die Ansicht von Videodateien nicht. Sie müssen die Datei lokal herunterladen, wie unten gezeigt, und sie dann mit dem Videoplayer ansehen.

Zusammenfassung
Herzlichen Glückwunsch! Sie haben nun gelernt, wie Sie Videos mit OpenCV-Python lesen, anzeigen, schreiben und speichern können. Mit diesen Grundkenntnissen können Sie beginnen, fortgeschrittenere Techniken und Anwendungen in der Computervision zu erkunden.
Fühlen Sie sich frei, dieses Tutorial zu erweitern, indem Sie verschiedene Videiformate ausprobieren, Filter auf die Frames anwenden oder mit Objekterkennung und -verfolgung experimentieren. Die Möglichkeiten sind endlos!



