Schneiden Sie mit Python + OpenCV jede Sekunde ein Bild aus einem Video aus

Während des Studiums schreibe ich auf, was ich allgemein für nützlich hielt. Ich verweise auf diesen Artikel. Der obige Artikel beschreibt Methoden wie das Extrahieren aller Frames aus dem Video, das Extrahieren von Frames von $ t_1 $ Sekunden bis $ t_2 $ Sekunden. In diesem Artikel werde ich jedoch die Methode zum Ausschneiden jeder Sekunde vorstellen. Ich bin.

Zweck

"Ich möchte das Video analysieren, aber es ist schwierig, mit dem Video so umzugehen, wie es ist?: Verwirrt:" "Wenn Sie es dann mit einem Rahmen ausschneiden, können Sie nicht zur Aufgabe des Bildes zurückkehren ?: Open_mouth:" Nach meiner persönlichen Erfahrung besteht der Zweck darin, Bilder einzeln aus dem Video auszuschneiden.

Annahme

Die folgende Verzeichnisstruktur wird angenommen.


|── sample.ipynb
|
|── video
|    └── video_sample.mp4
|     
└── frame
     └── video_sample
           |── image_0000.jpg
           ︙
           └── image_00030.jpg

Wenn das Video (video_sample.mp4) 30 Sekunden lang ist, wird angenommen, dass 31 Bilder mit 0 Sekunden, 1 Sekunde, ..., 30 Sekunden unter frame / video_sample gespeichert werden.

Ausführungsumgebung

Opencv-python ist eine gute Referenz für die Installation von OpenCV.

Implementierung

Argumentbeschreibung

--video_path: Der Pfad des Videos, in dem Sie den Frame zuschneiden möchten --frame_dir: Wo soll der Frame gespeichert werden?

Code

sample.ipynb


import cv2
from os import makedirs
from os.path import splitext, dirname, basename, join

def save_frames(video_path: str, frame_dir: str, 
                name="image", ext="jpg"):
    cap = cv2.VideoCapture(video_path)
    if not cap.isOpened():
        return
    v_name = splitext(basename(video_path))[0]
    if frame_dir[-1:] == "\\" or frame_dir[-1:] == "/":
        frame_dir = dirname(frame_dir)
    frame_dir_ = join(frame_dir, v_name)

    makedirs(frame_dir_, exist_ok=True)
    base_path = join(frame_dir_, name)

    idx = 0
    while cap.isOpened():
        idx += 1
        ret, frame = cap.read()
        if ret:
            if cap.get(cv2.CAP_PROP_POS_FRAMES) == 1:  #Speichern Sie 0 Sekunden Frame
                cv2.imwrite("{}_{}.{}".format(base_path, "0000", ext),
                            frame)
            elif idx < cap.get(cv2.CAP_PROP_FPS):
                continue
            else:  #Bild um 1 Sekunde speichern
                second = int(cap.get(cv2.CAP_PROP_POS_FRAMES)/idx)
                filled_second = str(second).zfill(4)
                cv2.imwrite("{}_{}.{}".format(base_path, filled_second, ext),
                            frame)
                idx = 0
        else:
            break

save_frames(".\\video\\video_sample.mp4", ".\\frame")

Bei der Ausführung wird es wie folgt gespeichert. image.png

Fazit

Es ist schwierig, mit Videos umzugehen.

Recommended Posts

Schneiden Sie mit Python + OpenCV jede Sekunde ein Bild aus einem Video aus
Schneiden Sie das Gesicht mit Python + OpenCV aus
Speichern Sie Videos Frame für Frame mit Python OpenCV
Schneiden Sie ein Bild mit Python aus
Gesichtserkennung aus mehreren Bilddateien mit openCV, ausschneiden und speichern
Stellen Sie OpenCV3 in Python3 zur Verfügung, das mit pyenv installiert wurde
Lesen Sie mit Python Zeile für Zeile aus der Datei
Binarisierung mit OpenCV / Python
JPEG-Bilderzeugung durch Angabe der Qualität mit Python + OpenCV
Zeigen Sie das Bild der USB-Kamera mit OpenCV von Python mit Raspeye an
Erstellen Sie mit opencv ganz einfach Miniaturansichten aus erotischen Videoordnern
"Apple-Verarbeitung" mit OpenCV3 + Python3
Gesichtserkennung in Echtzeit mit von getUserMedia [HTML5, openCV] aufgenommenem Video
Fügen Sie Videos mit OpenCV + Python einen gefälschten Tilt-Shift-Effekt hinzu
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
YouTube-Videoverwaltung mit Python 3
[Python] Verwenden von OpenCV mit Python (Basic)
Loop-Video-Laden mit opencv
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
Erstellen Sie mit python wxpython + openCV ein einfaches Videoanalysetool
Schneiden Sie JPEG für Zeitraffer aus Theta S-Video aus
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Mit Skype benachrichtigen Sie mit Skype von Python!
Verwenden von OpenCV mit Python @Mac
Objektextraktion im Bild durch Mustervergleich mit OpenCV mit Python
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Leuchtendes Leben mit Python und OpenCV
Rufen Sie C von Python mit DragonFFI auf
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Neuronales Netzwerk mit OpenCV 3 und Python 3
Verwenden von Rstan aus Python mit PypeR
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Installieren Sie Python von der Quelle mit Ansible
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Einfache Python + OpenCV-Programmierung mit Canopy
Führen Sie Aprili von Python auf Orange aus
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Gesichtserkennung mit Kamera mit opencv3 + python2.7
Laden Sie das GIF-Bild mit Python + OpenCV
Rufen Sie Python von Nim mit Nimpy auf
Finden Sie Bildähnlichkeit mit Python + OpenCV
Verwenden Sie OpenCV mit Python 3 in Window
Zeichnen Sie eine Illustration mit Python + OpenCV
Laden Sie fbx aus Python mitinema4d
Verfolgen Sie Baseballbälle mit Python + OpenCV
Objekterkennung mit openCV durch traincascade
Zeichnen Sie einen Pfeil (Vektor) mit opencv / python
Grundlegendes Studium von OpenCV mit Python
Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus
Sammeln von Informationen von Twitter mit Python (Twitter API)
Videowiedergabe mit Ton auf Python !! (tkinter / imageio)
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Empfangen Sie Textdaten von MySQL mit Python
Holen Sie sich HTML von Element mit Python-Selen
[Hinweis] Mit Python Daten von PostgreSQL abrufen
[Python] Gesichtserkennung durch OpenCV (Haar Cascade)