Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich mit Python Kameravideos aufnehmen, abspielen und speichern?

Wie kann ich mit Python Kameravideos aufnehmen, abspielen und speichern?

王林
王林nach vorne
2023-04-26 19:40:061808Durchsuche

Wie kann ich mit Python Kameravideos aufnehmen, abspielen und speichern?

Vor ein paar Tagen stellte ein Leser in der Fangruppe eine Frage:

Wie kann man die Klarheit und den Kontrast von Videos in Python verbessern?

Ich habe den Aspekt der Verwendung von Python zum Betreiben von Videos noch nicht behandelt, daher muss ich meinen Lesern leider mitteilen, dass ich ihn noch nicht behandelt habe.

Nachdem ich die letzten zwei Tage darüber nachgedacht habe, habe ich das Gefühl, dass ich diesem Abschnitt einige Inhalte hinzufügen sollte, um einerseits die Breite meines Engagements zu erhöhen und andererseits auch Fragen zu beantworten Fans.

Heute werde ich zunächst die grundlegendsten Vorgänge beim Bedienen von Videos in Python erläutern, einschließlich des Lesens und Abspielens von Videos sowie des Speicherns von Videos.

Video lesen

Um Videos aufzunehmen, müssen Sie ein VideoCapture-Objekt erstellen. Sein Argument kann ein Geräteindex oder der Name einer Videodatei sein. Daher haben wir zwei Möglichkeiten, Videos zu lesen, nämlich das Lesen von Videos von der Kamera und das Lesen von Videos aus der Datei.

Video von der Kamera lesen

Bei Geräten mit Kameras, wie z. B. Laptops mit Kameras, können wir die Kamera des Computers direkt aktivieren und den Videostream der Kamera lesen.

import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
while True:
# 逐帧捕获
ret, frame = cap.read()
# 如果正确读取帧,ret为True
if not ret:
break
# 显示结果帧
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
# 完成所有操作后,释放捕获器
cap.release()
cv.destroyAllWindows()

Hier habe ich den Parameter 0 an das VideoCapture-Objekt übergeben, der den Geräteindex darstellt. Der Geräteindex ist die Nummer, die angibt, welche Kamera. Normalerweise wäre eine Kamera angeschlossen (wie in meinem Fall). Also übergebe ich einfach 0. Sie können eine zweite Kamera auswählen, indem Sie 1 usw. übergeben.

cap.isOpened() wird verwendet, um zu bestimmen, ob das Video aufgenommen wird.

cap.read() gibt einen booleschen Wert (True/False) zurück. Es ist wahr, wenn der Frame korrekt gelesen wurde. Sie können also das Ende des Videos überprüfen, indem Sie diesen Rückgabewert überprüfen. Die Methode

cv.imshow wird zum Anzeigen von Videobildern verwendet. Das Prinzip der Videowiedergabe besteht darin, sie Bild für Bild abzuspielen.

Vergessen Sie am Ende nicht, den Gefangenen über cap.release() freizugeben.

Führen Sie diesen Code aus und Sie sehen ein Popup-Fenster, das das Bild von Ihrer Computerkamera in Echtzeit abspielt.

Video aus einer Datei abspielen

Dasselbe wie bei der Aufnahme von der Kamera, ändern Sie einfach den Kameraindex durch den Namen der Videodatei.

Darüber hinaus können Sie beim Anzeigen eines Videos die Geschwindigkeit der Videowiedergabe über cv.waitKey() steuern. Wenn die Einstellung zu klein ist, wird das Video sehr schnell sein, was einer Wiedergabe mit doppelter Geschwindigkeit entspricht; ist sie zu groß, wird das Video sehr langsam sein, was einer verzögerten Wiedergabe entspricht. Normalerweise sind 25 Millisekunden in Ordnung.

import cv2 as cv
cap = cv.VideoCapture('video.mp4')
while cap.isOpened():
ret, frame = cap.read()
# 如果正确读取帧,ret为True
if not ret:
break
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
cap.release()
cv.destroyAllWindows()

Führen Sie diesen Code aus und Sie sehen ein Popup-Fenster, in dem die von Ihnen ausgewählte Videodatei abgespielt wird.

Video speichern

Lesen Sie das Video von der Kamera und wir können das Video lokal speichern. Wir nehmen ein Video auf und verarbeiten es Bild für Bild. Wenn wir dieses Video speichern möchten, ist es ganz einfach, einfach cv.VideoWriter() zu verwenden.

cv.VideoWriter() hat 5 Parameter:

  • Parameter 1: Name der Ausgabedatei, zum Beispiel: Output.mp4.
  • Parameter 2: FourCC-Code, FourCC ist ein 4-Byte-Code, der zur Angabe des Videocodecs verwendet wird.
  • Parameter 3: Die Anzahl der Bildraten.
  • Parameter 4: Rahmengröße.
  • Parameter 5: Farbflag. Wenn True, normale Farbausgabe, andernfalls graue Bildausgabe.

Zum Vergleich zwischen FourCC und Videoformaten habe ich einige gängige Formate aufgelistet:

cv2.VideoWriter_fourcc('P','I','M','1') = MPEG-1 Codec cv2.VideoWriter_fourcc ( 'M','J','P','G') = Motion-Jpeg-Codec --> mp4v cv2.VideoWriter_fourcc('M', 'P', '4', '2') = MPEG-4.2-Codec cv2.VideoWriter_fourcc('D', 'I', 'V', '3') = MPEG-4.3-Codec cv2.VideoWriter_fourcc('D', 'I', 'V', 'X') = MPEG-4-Codec --> avi cv2.VideoWriter_fourcc('U', '2', '6', '3') = H263-Codec cv2.VideoWriter_fourcc('I', '2', '6', '3') = H263I-Codec cv2.VideoWriter_fourcc('F', 'L', 'V', '1') = FLV1-Codec

Code zum Speichern des Videos:

import cv2 as cv
cap = cv.VideoCapture(0)
# 定义编解码器并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'MJPG')
out = cv.VideoWriter('output.mp4', fourcc, 20.0, (640,480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
frame = cv.flip(frame, 1)
# 写翻转的框架
out.write(frame)
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('q'):
break
# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()

Führen Sie diesen Code aus, Sie finden eine Ausgabe im Codeverzeichnis mp4-Video Dateien.

Wenn Sie in den obigen Codeausschnitten den Videovorgang beenden möchten, drücken Sie einfach q auf der Tastatur.

Zusammenfassung

Das Obige ist das, was ich heute vorstellen werde. Es ist relativ einfach, Python-OpenCV zum Bedienen von Videos zu verwenden. Natürlich können Sie das Video auch beim Lesen oder Speichern bearbeiten. Wir werden dies in einem späteren Artikel vorstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Python Kameravideos aufnehmen, abspielen und speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen