Einstieg in die Arbeit mit Videos

OpenCVBeginner
Jetzt üben

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 dieseRun Python File 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 dieseRun Python File 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.

Download Video File

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!