[PYTHON] Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV 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

Klicken Sie hier, um Videodateien zu verarbeiten Versuchen Sie, Videos in Echtzeit mit OpenCV zu konvertieren

Dieses Mal werde ich versuchen, Videos zu verarbeiten, die in Echtzeit eingegeben wurden, z. B. Webkameras und Videokameras.

Glätten

Die Glättung ist ein Filter, mit dem der Bereich von Zeichen und der Bereich von sich bewegenden Objekten, die verfolgt werden sollen, bestimmt werden. Beispielsweise wird im folgenden Ablauf eine Glättung durchgeführt, um die Fläche zu bestimmen.

blur.png

OpenCV unterstützt die folgenden Glättungen:

Programm

Dieses Mal erstellen wir ein Programm, das die Gaußsche Glättung der Videoeingabe in Echtzeit durchführt, Fenster anzeigt und Dateien speichert.

sebcam.py


import cv2

# 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)


if __name__ == '__main__':
    #Konstante Definition
    ESC_KEY = 27     #Esc-Taste
    INTERVAL= 33     #Wartezeit
    FRAME_RATE = 30  # fps
    
    ORG_WINDOW_NAME = "org"
    GAUSSIAN_WINDOW_NAME = "gaussian"

    GAUSSIAN_FILE_NAME = "gaussian.avi"

    DEVICE_ID = 0

    #Kamerabilderfassung
    cap = cv2.VideoCapture(DEVICE_ID)

    #Vorbereiten der gespeicherten Videodatei
    end_flag, c_frame = cap.read()
    height, width, channels = c_frame.shape
    rec = cv2.VideoWriter(GAUSSIAN_FILE_NAME, \
                          cv_fourcc('X', 'V', 'I', 'D'), \
                          FRAME_RATE, \
                          (width, height), \
                          True)

    #Fenstervorbereitung
    cv2.namedWindow(ORG_WINDOW_NAME)
    cv2.namedWindow(GAUSSIAN_WINDOW_NAME)

    #Konvertierungsverarbeitungsschleife
    while end_flag == True:
        #Gaußsche Glättung
        g_frame = cv2.GaussianBlur(c_frame, (15, 15), 10)

        #Rahmenanzeige
        cv2.imshow(ORG_WINDOW_NAME, c_frame)
        cv2.imshow(GAUSSIAN_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 = cap.read()

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

Die Funktionsweise des Skripts wurde in der folgenden Umgebung bestätigt.

Videodateien und Eingaben von der Kamera können im Programm ähnlich behandelt werden. Wenn Sie Eingaben von der Kamera verarbeiten, ist es in Ordnung, wenn Sie die Geräte-ID anstelle des Dateinamens angeben.

cv2.VideoCapture(DEVICE_ID)

Wenn Sie nur eine Kamera haben, geben Sie "DEVICE_ID = 0" an.

Ausführungsergebnis

mov_org.png ** Keine Filterung **

mov_gaussian.png ** Mit Gaußscher Glättung **

Klicken Sie hier, um das Video anzusehen.

--Keine Filterung Nehmen Sie einfach mit der am PC angeschlossenen Software auf (Link).

"Es ist ein alter Notebook-PC, und kann OpenCV der Leistung in Python standhalten?" Ich habe versucht, es mit halbem Vertrauen auszuführen, aber es hat ohne Probleme funktioniert (^^) v

Recommended Posts

Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV zu konvertieren
Versuchen Sie, Videos mit OpenCV in Echtzeit zu konvertieren
Versuchen Sie die Gesichtserkennung in Echtzeit mit einer Webkamera
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 Kantenerkennung mit OpenCV
Holen Sie sich YouTube Live-Chat-Felder in Echtzeit mit API
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Probieren Sie OpenCV mit Google Colaboratory aus
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Versuchen Sie, das Bild mit opencv2 zu verwischen
Verwenden Sie OpenCV mit Python 3 in Window
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV
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