[PYTHON] Ich habe versucht, ein Standbild aus dem Video auszuschneiden


Hintergrund
Ich musste Anmerkungen machen, um Lehrerdaten für maschinelles Lernen zu erstellen. Aus diesem Grund wurde eine große Anzahl von Standbildern benötigt, daher habe ich beschlossen, Standbilder aus dem Video auszuschneiden.

Zuerst habe ich es manuell mit einem Tool gemacht, das Standbilder aus Videos extrahiert. Die Aufgabe war mühsam, deshalb habe ich beschlossen, sie zu automatisieren.


Vorgehensweise
installiere openCV Video wird geladen Schneiden Sie für jeden Einzelbildbild ein Standbild aus Passen Sie die Standbildgröße neu an

installiere openCV Diesmal habe ich es mit Windows + Anaconda gemacht, also an der Anaconda-Eingabeaufforderung

Users\user\conda install -c conda-forge opencv


 Ich konnte es mit einem Befehl installieren.
 Grundsätzlich kann dies vollautomatisch erfolgen, es dauerte jedoch ca. 2 Stunden.

 Ein wenig Schreiben in Python ist erforderlich, um tatsächlich zu funktionieren.


 <br> Code <br>
 Ein Laplace-Filter ist ein räumlicher Filter, der Bildkonturen durch quadratische Differenzierung extrahiert.
 laplacian.var untersucht die Variabilität der Laplace-Verteilung.

if ret and laplacian.var() >= laplacian_thr:
 laplacian_thr ist ein Schwellenwert für die Beurteilung als unscharfes Bild
 Ich entschied mich, diesen Wert zu verwenden, indem ich die Parameter des Bildes erfasste, die ich als unscharf erkannte.
 Dieses Mal habe ich beschlossen, die mit dem Wert von laplasiaan.var () von 800 oder weniger als unscharfes Bild zu beurteilen.


```python
"""
@author: S.Nakamura     2020/10/18
Ein Programm, das ein Video liest und in Bilder unterteilt (jpg)
input_Film: Name der zu lesenden Videodatei
cpf: Wie viele Frames sollen gespeichert werden?
image_dir: Zielverzeichnis für die Bildausgabe (erstellen, falls nicht verfügbar)

・ Video laden
・ Wie viele Frames sollen gelesen werden?
- Geben Sie das Ausgabezielverzeichnis des Bildes an
・ Entfernen Sie das unscharfe Bild
・ Größe ändern
・ Bestimmen Sie einen Namen und eine Ausgabe
""" 
import cv2
import numpy as np
import os

i=0
count = 0
cpf = 10                        #Wie viele Frames müssen ausgeschnitten werden?

#Bildgröße
image_width =Bildbreite zum Ändern der Größe
image_heigh =Bildgröße zum Ändern der Größe
#Laplace für die Beurteilung von Unschärfebildern.var
laplacian_thr = 800             #Schwellenwert bei der Beurteilung eines unscharfen Bildes

#Video wird geladen
cap = cv2.VideoCapture('Geben Sie die zu lesende Videodatei an')

while(cap.isOpened()):
    ret, frame = cap.read()                   #Video laden
    #assert frame, "Gescheitert zu öffnen"            #Zum Debuggen

    if ret == False:
        print('Finished')                    #Wenn der Videoausschnitt fertig ist
        break

    if count%cpf == 0:                      #Wie viele Frames müssen einmal ausgeschnitten werden?

        #Reduzieren Sie die Größe
        resize_frame = cv2.resize(frame,(image_width,image_heigh))

         #Überprüfen Sie, ob das Bild unscharf ist
        laplacian = cv2.Laplacian(resize_frame, cv2.CV_64F)
        if ret and laplacian.var() >= laplacian_thr: #Geben Sie nur diejenigen aus, deren Defokusbeurteilung über dem Schwellenwert liegt
            
            #Dateiname des ersten Arguments Bild, zweites Argument Das Bild, das Sie speichern möchten
            write = cv2.imwrite('Name und Erweiterung des zu speichernden Bildes')  #Zeigen Sie das abgeschnittene Bild an
            assert write, "Fehler beim Speichern"
            print('Save',Name und Erweiterung des zu speichernden Bildes)          #Bestätigungsanzeige
            i += 1
        
    count = count + 1

cap.release()

Ich habe es nicht im Detail überprüft, aber ich konnte den Zweck erreichen, das Bild auszuschneiden und seine Größe zu ändern. Ich bin beeindruckt, ein Standbild aus einem Video mit einer so einfachen Beschreibung ausschneiden zu können.


Referenzinformationen
Blur detection with OpenCV https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/ note.nkmk.me  https://note.nkmk.me/python-opencv-video-to-still-image/ Programm zum Ausschneiden von Bildern (jpg) aus Videos (mp4) https://www.souichi.club/deep-learning/spliter/

Recommended Posts

Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, Objekte aus dem Bild des Steak-Sets zu sortieren
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ① Objekterkennung
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ② Sortieren der Überlappungsnummern
Ich möchte mit Python nur das Gesicht aus einem Personenbild ausschneiden und speichern ~ Gesichtserkennung und Zuschneiden mit face_recognition ~
Ich habe versucht, Objekte aus dem Bild des Steak-Set-Essens zu sortieren - Ähnliches Bild Wärmekartenerkennung
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
So nehmen Sie ein aufgenommenes Bild aus einem Video auf (OpenCV)
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ⑤ Ähnliche Erkennung von Bildmerkmalen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Schneiden wir das Gesicht aus dem Bild
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, mit PI Fu aus einem Bild ein 3D-Modell einer Person zu erstellen
Ich habe versucht, das SD-Boot-Image von LicheePi Nano zu erstellen
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe versucht, die Videowiedergabezeit anzuzeigen (OpenCV: Python-Version)
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Es ist schwierig, einen grünen Bildschirm zu installieren, daher habe ich nur das Gesicht ausgeschnitten und es dem Hintergrundbild überlagert
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
Ich habe eine Web-API erstellt
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe versucht, den besten Weg zu finden, um einen guten Ehepartner zu finden
Ich habe versucht, das Bild durch Klicken mit der rechten und linken Maustaste in den angegebenen Ordner zu verschieben
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
Ich habe versucht, den Winkel von Sin und Cos mit Chainer zu lernen
Ich habe versucht, mit django eine E-Mail zum Abschluss der Registrierung von Google Mail zu senden.
Starten Sie die Webkamera, machen Sie ein Standbild und speichern Sie es lokal
Holen Sie sich den Songtitel aus dem Titel des von Ihnen gesungenen Videos
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, beim Trocknen der Wäsche zu optimieren
Ich habe versucht, durch Schaben ein Bild zu bekommen
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen