[PYTHON] Versuchen Sie, Videos mit OpenCV in Echtzeit zu konvertieren

Einführung

OpenCV (Open Source Computer Vision Library) ist eine Sammlung von BSD-lizenzierten Video- / Bildverarbeitungsbibliotheken. Es gibt viele Algorithmen wie Bildfilterung, Vorlagenabgleich, Objekterkennung, Videoanalyse und maschinelles Lernen.

Beispiel für Bewegungsverfolgung mit OpenCV (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s

Klicken Sie hier für die Installation und einfache Verwendung http://qiita.com/olympic2020/items/d5d475a446ec9c73261e

Klicken Sie hier, um Standbilder zu filtern Versuchen Sie die Kantenerkennung mit OpenCV

Dieses Mal werde ich das Video in Echtzeit konvertieren.

Programm

Das Folgende wird in der Schleife der while-Anweisung ausgeführt.

  1. Laden Sie ein Bild des Original-Farbvideos
  2. Konvertieren Sie Farbrahmen in Graustufenrahmen
  3. Zeigen Sie den Rahmen im Fenster an
  4. Schreiben Sie den Frame in eine Datei

movie.py


# -*- coding: utf-8 -*-
import cv2


#Konstante Definition
ESC_KEY = 27     #Esc-Taste
INTERVAL= 33     #Wartezeit
FRAME_RATE = 30  # fps

ORG_WINDOW_NAME = "org"
GRAY_WINDOW_NAME = "gray"

ORG_FILE_NAME = "org_768x576.avi"
GRAY_FILE_NAME = "gray_768x576.avi"

#Lesen Sie die Originalvideodatei
org = cv2.VideoCapture(ORG_FILE_NAME)

#Vorbereiten der gespeicherten Videodatei
end_flag, c_frame = org.read()
height, width, channels = c_frame.shape
rec = cv2.VideoWriter(GRAY_FILE_NAME, \
                      cv2.VideoWriter_fourcc(*'XVID'), \
                      FRAME_RATE, \
                      (width, height), \
                      False)
#Fenstervorbereitung
cv2.namedWindow(ORG_WINDOW_NAME)
cv2.namedWindow(GRAY_WINDOW_NAME)

#Konvertierungsverarbeitungsschleife
while end_flag == True:
    #Graustufenumwandlung
    g_frame = cv2.cvtColor(c_frame, cv2.COLOR_BGR2GRAY)

    #Rahmenanzeige
    cv2.imshow(ORG_WINDOW_NAME, c_frame)
    cv2.imshow(GRAY_WINDOW_NAME, g_frame)

    #Rahmenschreiben
    rec.write(g_frame)

    #Beenden Sie mit der Esc-Taste
    key = cv2.waitKey(INTERVAL)
    if key == ESC_KEY:
        break

    #Lesen Sie den nächsten Frame
    end_flag, c_frame = org.read()

#Verarbeitung beenden
cv2.destroyAllWindows()
org.release()
rec.release()

Klicken Sie hier für ein Beispielvideo. (Download) Benennen Sie "768x576.avi" in "org_768x576.avi" um und legen Sie es im selben Verzeichnis wie das Skript ab und führen Sie es aus.

Ausführungsergebnis

Das Farbvideo und das Graustufenvideo wurden gleichzeitig angezeigt, und das Graustufenvideo wurde ebenfalls in der Datei gespeichert.

window.png

So legen Sie den Codec fest

OpenCV3.1 hat kein "cv2.cv.CV_FOURCC", das bis OpenCV2.4 existierte. Es gibt auch eine Methode, um mit Ihrer eigenen Methode umzugehen, wie unten gezeigt, also werde ich sie vorstellen.

CV_FOURCC.py


# cv2.cv.CV_FOURCC
def cv_fourcc(c1, c2, c3, c4):
    return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
        ((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)

Wenn Sie nur einen Code verwenden müssen, der in Ihrem Programm festgelegt ist, können Sie ihn auch in der Konstantendefinition so definieren.

opencv3.1.py


XVID = 0x44495658

Hier finden Sie eine Zusammenfassung häufig verwendeter Codecs.

Codec-Code String Konstante
MPEG-1 PIM1 0x314D4950
MPEG-4 MPG4 0x3447504D
MPEG-4.2 MP42 0x3234504D
MPEG-4.3 DIV3 0x33564944
DivX DIVX 0x58564944
DivX 5.0 DX50 0x30355844
Xvid XVID 0x44495658
H.263 U263 0x33363255
H.263I I263 0x33363249
H.264 H264 0x34363248
FLV1 FLV1 0x31564C46
Motion JPEG MJPG 0x47504A4D
Unkomprimiert Null(0) 0x00000000

Klicken Sie hier für eine Liste der Codecs (Link)

Fortsetzung folgt

Als nächstes konvertieren wir das Video der Webkamera / Videokamera in Echtzeit mit OpenCV. Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV zu konvertieren

Recommended Posts

Versuchen Sie, Videos mit OpenCV in Echtzeit zu konvertieren
Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV zu konvertieren
Zeichnen Sie den optischen Fluss in Echtzeit mit OpenCV (Shi-Tomasi-Methode, Lucas-Kanade-Methode)
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Versuchen Sie die Gesichtserkennung in Echtzeit mit einer Webkamera
Versuchen Sie die Kantenerkennung mit OpenCV
Probieren Sie OpenCV mit Google Colaboratory aus
Holen Sie sich YouTube Live-Chat-Felder in Echtzeit mit API
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Versuchen Sie, das Bild mit opencv2 zu verwischen
Verwenden Sie OpenCV mit Python 3 in Window
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Versuchen Sie, sich mit Python bei qiita anzumelden
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Erstellen verschiedener Photoshop-Videos mit Python + OpenCV ③ Erstellen Sie verschiedene Photoshop-Videos
Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python
Bequeme Zeitreihenaggregation mit TimeGrouper von Pandas
Verfolgen Sie Objekte in Ihrem Video mit OpenCV Tracker
Lesen Sie die Ausgabe von subprocess.Popen in Echtzeit
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Ändern Sie die Zeitzone in Oracle Database Docker
So führen Sie mit OpenCV ein Null-Padding in einer Zeile durch
Versuchen Sie, assoziativen Speicher durch Hop-Field-Netzwerk in Python zu implementieren
Versuchen Sie, die Bildkonvertierung mit OpenCV mit Python zu projizieren
Versuchen Sie MNIST mit Mehrwertsteuer (Virtual Adversarial Training) mit Keras
Erstellen Sie verschiedene Photoshop-Videos mit Python + OpenCV. ④ Beheben Sie Probleme
Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Erstellen verschiedener Photoshop-Videos mit Python + OpenCV ② Erstellen Sie Photoshop-Standbilder
(Fortsetzung) Probieren Sie andere Entfernungsfunktionen mit kmeans in Scikit-learn aus