[PYTHON] J'ai essayé de couper une image fixe de la vidéo


Contexte
J'avais besoin d'annoter pour créer des données d'enseignant pour l'apprentissage automatique. Pour cette raison, une grande quantité d'images fixes était nécessaire, j'ai donc décidé de supprimer des images fixes de la vidéo.

Au début, je le faisais manuellement à l'aide d'un outil qui extrait des images fixes à partir de vidéos. La tâche était fastidieuse, j'ai donc décidé de l'automatiser.


Procédure
installer openCV Chargement de la vidéo Découpez une image fixe pour chaque image d'unité Réajuster la taille de l'image fixe

installer openCV Cette fois, je l'ai fait avec windows + anaconda, donc à l'invite anaconda

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


 J'ai pu l'installer avec une commande.
 Fondamentalement, cela peut être fait de manière entièrement automatique, mais cela a pris environ 2 heures.

 Un peu d'écriture en Python est nécessaire pour fonctionner.


 <br> Code <br>
 Un filtre laplacien est un filtre spatial qui extrait les contours de l'image en utilisant la différenciation quadratique.
 laplacian.var examine la variabilité de la distribution de Laplace.

if ret and laplacian.var() >= laplacian_thr:
 laplacian_thr est un seuil pour juger comme une image floue
 J'ai décidé d'utiliser cette valeur en acquérant les paramètres de l'image que je reconnaissais comme floue.
 Cette fois, j'ai décidé de juger celui avec la valeur de laplasiaan.var () de 800 ou moins comme image floue.


```python
"""
@author: S.Nakamura     2020/10/18
Un programme qui lit une vidéo et la divise en images (jpg)
input_movie: nom du fichier vidéo à lire
cpf: combien d'images enregistrer
image_dir: répertoire de destination de sortie d'image (créer si non disponible)

・ Chargement de la vidéo
・ Combien d'images à lire
-Spécifier le répertoire de destination de sortie de l'image
・ Supprimer l'image floue
・ Redimensionner
・ Déterminez un nom et une sortie
""" 
import cv2
import numpy as np
import os

i=0
count = 0
cpf = 10                        #Combien de cadres découper

#Taille de l'image
image_width =Largeur de l'image à redimensionner
image_heigh =Hauteur de l'image à redimensionner
#Laplacien pour le jugement d'image floue.var
laplacian_thr = 800             #Seuil lors de l'évaluation d'une image floue

#Chargement de la vidéo
cap = cv2.VideoCapture('Spécifiez le fichier vidéo à lire')

while(cap.isOpened()):
    ret, frame = cap.read()                   #Charger la vidéo
    #assert frame, "Échec de l'ouverture"            #Pour le débogage

    if ret == False:
        print('Finished')                    #Lorsque la découpe vidéo est terminée
        break

    if count%cpf == 0:                      #Combien d'images à découper une fois

        #Réduisez la taille
        resize_frame = cv2.resize(frame,(image_width,image_heigh))

         #Vérifiez si l'image est floue
        laplacian = cv2.Laplacian(resize_frame, cv2.CV_64F)
        if ret and laplacian.var() >= laplacian_thr: #Sortie uniquement ceux dont le jugement de défocalisation est supérieur au seuil
            
            #Nom de fichier de l'image du premier argument, deuxième argument L'image que vous souhaitez enregistrer
            write = cv2.imwrite('Nom et extension de l'image à enregistrer')  #Afficher l'image coupée
            assert write, "Échec de l'enregistrement"
            print('Save',Nom et extension de l'image à enregistrer)          #Affichage de confirmation
            i += 1
        
    count = count + 1

cap.release()

Bien que nous ne l'ayons pas vérifié en détail, nous avons atteint l'objectif de découper l'image et de la redimensionner. Je suis impressionné de pouvoir découper une image fixe d'une vidéo avec une description aussi simple.


Informations de référence
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/ Programme pour découper des images (jpg) à partir de vidéos (mp4) https://www.souichi.club/deep-learning/spliter/

Recommended Posts

J'ai essayé de couper une image fixe de la vidéo
J'ai essayé de détecter l'iris à partir de l'image de la caméra
J'ai essayé de trier les objets de l'image du plat de steak-④ Clustering
J'ai essayé de trier les objets de l'image du plat de steak-① Détection d'objets
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé de trier les objets de l'image du plat de steak-② Tri des numéros de chevauchement
Je veux découper uniquement le visage d'une image de personne avec Python et l'enregistrer ~ Détection de visage et rognage avec face_recognition ~
J'ai essayé de trier les objets de l'image du plat de steak --③ Image similaire Détection de carte de chaleur
J'ai essayé d'extraire le dessin au trait de l'image avec Deep Learning
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
Comment prendre une image capturée à partir d'une vidéo (OpenCV)
J'ai essayé de trier les objets de l'image du plat de steak-⑤ Détection de point de fonction d'image similaire
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de découvrir les grandes lignes de Big Gorilla
J'ai essayé de reconnaître le visage de la vidéo (OpenCV: version python)
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé d'obtenir diverses informations de l'API codeforces
Coupons le visage de l'image
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé d'utiliser PI Fu pour générer un modèle 3D d'une personne à partir d'une image
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé d'afficher le temps de lecture de la vidéo (OpenCV: version Python)
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
Il est difficile d'installer un écran vert, je n'ai donc découpé que le visage et l'ai superposé sur l'image de fond
J'ai essayé de créer un linebot (implémentation)
J'ai essayé de résumer la commande umask
J'ai essayé de créer un linebot (préparation)
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
J'ai créé une API Web
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé de vérifier la meilleure façon de trouver un bon partenaire de mariage
J'ai essayé de déplacer l'image vers le dossier spécifié en faisant un clic droit et un clic gauche
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'apprendre l'angle du péché et du cos avec le chainer
J'ai essayé d'envoyer un e-mail de fin d'inscription depuis Gmail avec django.
Démarrez la webcam, prenez une image fixe et enregistrez-la localement
Obtenez le titre de la chanson à partir du titre de la vidéo que vous avez chanté
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé de créer une méthode de super résolution / ESPCN
J'ai essayé Web Scraping pour analyser les paroles.
J'ai essayé de créer une méthode de super résolution / SRCNN ①
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé d'optimiser le séchage du linge
J'ai essayé d'obtenir une image en grattant
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé de générer une chaîne de caractères aléatoire
J'ai essayé de créer une méthode de super résolution / SRCNN ③
J'ai essayé de créer une méthode de super résolution / SRCNN ②