Speichern von betriebenem Video von einer Webcam mit OpenCV
OpenCV ist eine umfangreiche Bibliothek, die verschiedene Funktionen für Bild- und Videobetriebe bereitstellt. Mit OpenCV können wir Operationen am Eingangsvideo ausführen. Mit OpenCV können wir das betriebene Video auch zur weiteren Verwendung speichern. Zum Speichern von Bildern verwenden wir cv2.imwrite(), mit dem das Bild an einem bestimmten Speicherort gespeichert wird. Zum Speichern eines aufgezeichneten Videos erstellen wir jedoch ein Video Writer- Objekt.
Zunächst geben wir die Variable fourcc an . FourCC ist ein 4-Byte-Code, mit dem der Videocodec angegeben wird. Eine Liste der Codes kann bei Video Codecs von FourCC bezogen werden . Die Codecs für Windows sind DIVX und für OSX avc1, h263. FourCC-Code wird als cv2.VideoWriter_fourcc (* 'MJPG') für MJPG und cv2.VideoWriter_fourcc (* 'XVID') für DIVX übergeben.
Anschließend wird die Funktion cv2.VideoWriter() verwendet.
cv2.VideoWriter (Dateiname, Fourcc, FPS, FrameSize)
Die Parameter sind:
- Dateiname: Gibt den Namen der Ausgabevideodatei an.
- fourcc: (zur Aufnahme) Definieren des Codecs
- fps: Definierte Bildrate des ausgegebenen Videostreams
- frameSize: Größe der Videobilder
import
numpy as np
import
cv2
cap
=
cv2.VideoCapture(
0
)
fourcc
=
cv2.VideoWriter_fourcc(
*
'XVID'
)
out
=
cv2.VideoWriter(
'output.avi'
, fourcc,
20.0
, (
640
,
480
))
while
(
True
):
ret, frame
=
cap.read()
hsv
=
cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
out.write(hsv)
cv2.imshow(
'Original'
, frame)
cv2.imshow(
'frame'
, hsv)
if
cv2.waitKey(
1
) &
0xFF
=
=
ord
(
'a'
):
break
cap.release()
out.release()
cv2.destroyAllWindows()
Ausgabe:
Der Ausgabebildschirm zeigt zwei Fenster an. Das Fenster mit dem Namen "Original" zeigt Eingabebilder, während das Fenster "Bild" die betriebene Videosequenz anzeigt.
Außerdem wird ein Video mit dem Namen "Ausgabe" am selben Dateispeicherort mit vordefinierter Bildrate und Bildgröße aufgenommen und gespeichert.
Es hat im Allgemeinen das Format .avi. Das gespeicherte Video sieht folgendermaßen aus: Video ausgeben
Das Eingangsvideo kann auch in anderen Farbräumen wie Graustufen betrieben werden
import
numpy as np
import
cv2
cap
=
cv2.VideoCapture(
0
)
fourcc
=
cv2.VideoWriter_fourcc(
*
'XVID'
)
out
=
cv2.VideoWriter(
'output.avi'
, fourcc,
20.0
, (
640
,
480
))
while
(
True
):
ret, frame
=
cap.read()
gray
=
cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
out.write(gray)
cv2.imshow(
'Original'
, frame)
cv2.imshow(
'frame'
, gray)
if
cv2.waitKey(
1
) &
0xFF
=
=
ord
(
'a'
):
break
cap.release()
cv2.destroyAllWindows()
Eine Videodatei dieses betriebenen Videos wird am selben Speicherort wie oben gespeichert.
Diese Methode kann uns helfen, einen eigenen Datensatz für Trainingsdaten in Projekten / Modellen zu erstellen, von unserer Webcam aufzunehmen und die erforderlichen Vorgänge auszuführen sowie das Video in verschiedenen Farbräumen zu erstellen.
Bitte verweisen Sie auf diesen Link, um Inhalte in verschiedenen Farbräumen zu visualisieren:
https://de.acervolima.com/python-visualisierung-von-bildern-in-verschiedenen-farbraumen/
Verweise:
- https://docs.opencv.org/3.4/dd/d9e/classcv_1_1VideoWriter.html
- https://docs.opencv.org/3.1.0/dd/d43/tutorial_py_video_display.html
- https://en.wikipedia.org/wiki/FourCC
- https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html