[PYTHON] Essayez de convertir des vidéos en temps réel avec OpenCV

introduction

OpenCV (Open Source Computer Vision Library) est une collection de bibliothèques de traitement vidéo / image sous licence BSD. Il existe de nombreux algorithmes tels que le filtrage d'images, la mise en correspondance de modèles, la reconnaissance d'objets, l'analyse vidéo et l'apprentissage automatique.

Exemple de suivi de mouvement avec OpenCV (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s

Cliquez ici pour l'installation et une utilisation facile http://qiita.com/olympic2020/items/d5d475a446ec9c73261e

Cliquez ici pour filtrer les images fixes Essayez la détection des bords avec OpenCV

Cette fois, je vais convertir la vidéo en temps réel.

programme

Ce qui suit est fait dans la boucle de l'instruction while.

  1. Chargez une image de la vidéo couleur originale
  2. Convertissez les cadres de couleur en cadres en niveaux de gris
  3. Affichez le cadre dans la fenêtre
  4. Écrivez le cadre dans un fichier

movie.py


# -*- coding: utf-8 -*-
import cv2


#Définition constante
ESC_KEY = 27     #Touche Echap
INTERVAL= 33     #Temps d'attente
FRAME_RATE = 30  # fps

ORG_WINDOW_NAME = "org"
GRAY_WINDOW_NAME = "gray"

ORG_FILE_NAME = "org_768x576.avi"
GRAY_FILE_NAME = "gray_768x576.avi"

#Lire le fichier vidéo original
org = cv2.VideoCapture(ORG_FILE_NAME)

#Préparation du fichier vidéo enregistré
end_flag, c_frame = org.read()
height, width, channels = c_frame.shape
rec = cv2.VideoWriter(GRAY_FILE_NAME, \
                      cv2.VideoWriter_fourcc(*'XVID'), \
                      FRAME_RATE, \
                      (width, height), \
                      False)
#Préparation de la fenêtre
cv2.namedWindow(ORG_WINDOW_NAME)
cv2.namedWindow(GRAY_WINDOW_NAME)

#Boucle de traitement de conversion
while end_flag == True:
    #Conversion de l'échelle de gris
    g_frame = cv2.cvtColor(c_frame, cv2.COLOR_BGR2GRAY)

    #Affichage du cadre
    cv2.imshow(ORG_WINDOW_NAME, c_frame)
    cv2.imshow(GRAY_WINDOW_NAME, g_frame)

    #Écriture de cadre
    rec.write(g_frame)

    #Quitter avec la touche Echap
    key = cv2.waitKey(INTERVAL)
    if key == ESC_KEY:
        break

    #Lire l'image suivante
    end_flag, c_frame = org.read()

#Terminer le traitement
cv2.destroyAllWindows()
org.release()
rec.release()

Cliquez ici pour un exemple de vidéo. (Télécharger) Renommez "768x576.avi" en "org_768x576.avi" et placez-le dans le même répertoire que le script et exécutez-le.

Résultat d'exécution

La vidéo couleur et la vidéo en échelle de gris ont été affichées en même temps, et la vidéo en échelle de gris a également été enregistrée dans le fichier.

window.png

Comment spécifier le codec

OpenCV3.1 n'a pas cv2.cv.CV_FOURCC, qui existait jusqu'à OpenCV2.4. Il existe également une méthode pour le gérer avec votre propre méthode, comme indiqué ci-dessous, je vais donc la présenter.

CV_FOURCC.py


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

Si vous ne devez utiliser qu'un code fixe dans le programme, vous pouvez également le définir comme ceci dans la définition de la constante.

opencv3.1.py


XVID = 0x44495658

Voici un résumé des codecs fréquemment utilisés.

Code codec Chaîne constant
MPEG-1 PIM1 0x314D4950
MPEG-4 MPG4 0x3447504D
MPEG-4.2 MP42 0x3234504D
MPEG-4.3 DIV3 0x33564944
DivX DIVX 0x58564944
DivX 5.0 DX50 0x30355844
Xvid XVID 0x44495658
H.263 U263 0x33363255
H.263I I263 0x33363249
H.264 H264 0x34363248
FLV1 FLV1 0x31564C46
Motion JPEG MJPG 0x47504A4D
Non compressé zéro(0) 0x00000000

Cliquez ici pour une liste de codecs (lien)

à suivre

Ensuite, convertissons la vidéo de la caméra Web / caméra vidéo en temps réel avec OpenCV. Essayez de convertir des vidéos de caméra Web / caméra vidéo en temps réel avec OpenCV

Recommended Posts

Essayez de convertir des vidéos en temps réel avec OpenCV
Essayez de convertir des vidéos de caméra Web / caméra vidéo en temps réel avec OpenCV
Dessinez un flux optique en temps réel avec OpenCV (méthode Shi-Tomasi, méthode Lucas-Kanade)
Obtenez une sortie standard en temps réel avec le sous-processus Python
Essayez la détection des visages en temps réel à l'aide d'une webcam
Essayez la détection des bords avec OpenCV
Essayez OpenCV avec Google Colaboratory
Obtenez des champs de chat en direct YouTube en temps réel avec l'API
Essayez la reconnaissance faciale avec python + OpenCV
Essayez de brouiller l'image avec opencv2
Utiliser OpenCV avec Python 3 dans Window
J'ai essayé de décrire le trafic en temps réel avec WebSocket
Essayez de vous connecter à qiita avec Python
Essayez de travailler avec des données binaires en Python
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Essayez de convertir en données ordonnées avec les pandas
Créez diverses vidéos Photoshop avec Python + OpenCV ③ Créez diverses vidéos Photoshop
Visualisez les informations du capteur d'accélération de la carte micro-ordinateur en temps réel avec mbed + Python
Agrégation pratique de séries chronologiques avec TimeGrouper de pandas
Suivez les objets de votre vidéo avec OpenCV Tracker
Lire la sortie du sous-processus, ouvrir en temps réel
Essayez de travailler avec Mongo en Python sur Mac
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Modifier le fuseau horaire dans Oracle Database Docker
Comment faire du zéro-padding sur une ligne avec OpenCV
Essayez d'implémenter la mémoire associative par hop field network en Python
Essayez de projeter la conversion d'image en utilisant OpenCV avec Python
Essayez MNIST avec VAT (Virtual Adversarial Training) avec Keras
Créez diverses vidéos Photoshop avec Python + OpenCV ④ Traitez les problèmes
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Créez diverses vidéos Photoshop avec Python + OpenCV ② Créez une image fixe Photoshop
(Suite) Essayez d'autres fonctions de distance avec kmeans dans Scikit-learn