Comment boucler et lire une vidéo gif avec openCV

Background Actuellement, je crée une page Web qui présente moi-même OpenCV mineur. https://featurepoints.jp/opencv_doc/

Donc, je convertis GIF de GIFMAGAZIN en MP4 en tant qu'ensemble de données et j'effectue un traitement d'image, mais comme c'est cv2.imshow (" nom de la fenêtre "" Quand j'essaye de lire une vidéo avec, mat) , il boucle comme l'affichage du navigateur et se termine en peu de temps sans s'afficher à plusieurs reprises.

Ici, j'écrirai comment boucler la lecture vidéo en utilisant cv2.imshow ().

gif to mp4 Il existe deux façons de convertir un fichier gif en mp4. La première consiste à afficher le gif dans le navigateur, à cliquer avec le bouton droit de la souris et à sélectionner «Enregistrer en tant que vidéo sous» pour le convertir. L'autre consiste à convertir en utilisant ffmpeg. (Voir Conversion d'une animation gif en mp4 avec FFmpeg)

ffmpeg -i [chemin du fichier gif]  -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" [chemin du fichier mp4] 

Method Comment afficher à plusieurs reprises

  1. Lisez la vidéo une fois et stockez toutes les images dans un tableau
  2. Lisez la vidéo en boucle infinie
  3. Définissez les conditions de résiliation pendant le traitement Tu peux le faire.

Development

La vidéo se termine par [ESC], mais vous pouvez enregistrer l'image du cadre en appuyant sur [S].

import numpy as np
import cv2
import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--src')
    args = parser.parse_args()

    cap = cv2.VideoCapture(args.src)
    fps = cap.get(cv2.CAP_PROP_FPS)
    frames = []

    #Lisez la vidéo une fois et stockez les images dans un tableau
    while cap.isOpened():
        _ret, frame = cap.read()        
        if frame is None:
            break
        frames.append(frame)
    cap.release()

    end = False
    while True:
        if end:
            break
        for frame in frames:
            cv2.imshow("loop a gif",frame)

            k = cv2.waitKey(int(fps)) & 0xFF

            #Terminer avec ESC
            if k == 27:
                end = True
                break
            #Enregistrer l'image avec S
            elif k == ord("s"):
                cv2.imwrite("output.png ", frame)

if __name__ == '__main__':
    main()

Consequence

output.gif

Afterword Les données vidéo (image) sont [Stop Sento-kun! J'ai essayé d'utiliser GIF Game. Si vous appuyez sur le bouton S au bon moment, l'image affichée comme "belle" sera enregistrée. C'est assez difficile à comprendre. Passez un bon moment: gâteau:

Recommended Posts

Comment boucler et lire une vidéo gif avec openCV
Chargement de la vidéo en boucle avec opencv
[Comment!] Apprenez et jouez à Super Mario avec Tensorflow !!
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Fractal pour faire et jouer avec Python
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Essayez de séparer l'arrière-plan et l'objet en mouvement de la vidéo avec OpenCV
[REAPER] Comment jouer à Reascript avec Python
Comment recadrer une image avec Python + OpenCV
[Python] Comment gérer les caractères japonais avec openCV
Comment partager des dossiers avec Docker et Windows avec tensorflow
Comment extraire des valeurs Null et des valeurs non Null avec des pandas
Comment prendre une image capturée à partir d'une vidéo (OpenCV)
Comment obtenir des histogrammes RVB et HSV avec OpenCV
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Ajoutez un faux effet d'inclinaison aux vidéos avec OpenCV + Python
[Jouons avec Python] Traitement d'image en monochrome et points
Comment créer une trame de données et jouer avec des éléments avec des pandas
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Briller la vie avec Python et OpenCV
Python: comment utiliser async avec
Réseau neuronal avec OpenCV 3 et Python 3
Comment installer et utiliser Tesseract-OCR
Jouez avec la série Poancare et SymPy
Comment importer des fichiers CSV et TSV dans SQLite avec Python
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment gérer les erreurs lors de l'installation de whitenoise et du déploiement sur Heroku
Comment gérer les données déséquilibrées
Comment installer OpenCV sur Mac
Comment exécuter Jupyter et Spark sur Mac avec des paramètres minimaux
Comment démarrer avec Scrapy
Comment démarrer avec Python
Créez un lecteur vidéo avec PySimpleGUI + OpenCV 2 Ajoutez le paramètre ROI et la fonction d'enregistrement (DIVX, MJPG, GIF)
Comment gérer l'erreur DistributionNotFound
Comment installer et configurer Blackbird
Comment utiliser .bash_profile et .bashrc
Comment démarrer avec Django
Comment enregistrer une partie d'une longue vidéo en utilisant OpenCV
Comment installer et utiliser Graphviz
Comment gérer les erreurs lors de l'installation de Python et de pip avec choco
Charger une image gif avec Python + OpenCV
Préparer un environnement pour utiliser OpenCV et Pillow avec AWS Lambda
Comment calculer la date avec python
Comment installer mysql-connector avec pip3
Comment INNER JOIN avec SQL Alchemy
[ROS2] Comment lire un fichier bag avec le lancement au format python
Comment installer Anaconda avec pyenv
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Dessinez des figures avec OpenCV et PIL