2009-09-26 12 views
12

J'ai besoin de:Le module Python le plus utilisé pour le traitement vidéo?

  1. Ouvrir un fichier vidéo
  2. itérer sur les images du fichier sous forme d'images
  3. faire une analyse dans ce cadre d'image de la vidéo
  4. dessiner dans cette image du vidéo
  5. Créer une nouvelle vidéo avec ces changements

OpenCV ne fonctionne pas pour ma webcam, mais python-gst est travail. Est-ce possible en utilisant python-gst?

Merci!

+1

Bien que ce soit ancien, j'ai un code Python qui prend un nom de fichier et retourne un itérateur d'images PIL. Je peux poster le code source si quelqu'un est intéressé. – carl

Répondre

6

Voulez-vous dire que opencv ne peut pas se connecter à votre webcam ou ne peut pas lire les fichiers vidéo enregistrés par elle?

Avez-vous essayé d'enregistrer la vidéo dans un autre format?

OpenCV est probablement le meilleur outil de prise en charge de traitement d'image python

+1

+1 pour recommander OpenCV. – whatnick

0

Il suffit de construire une enveloppe C/C++ pour votre webcam, puis utiliser SWIG ou SIP pour accéder à ces fonctions à partir de Python. Ensuite, utilisez OpenCV dans Python qui est la meilleure bibliothèque de vision artificielle open source dans la nature. Si vous vous souciez des performances et que vous travaillez sous Linux, vous pouvez télécharger des versions gratuites d'Intel Performance Primitives (IPP) qui peuvent être chargées à l'exécution sans aucun effort d'OpenCV. Pour certains algorithmes, vous pouvez obtenir une amélioration de 200% des performances, plus un support multicœur automatique pour la plupart des fonctions consommatrices de temps.

+1

Rappelez-vous que peu de gens savent comment créer des wrappers pour Python, et la question de l'OP traite principalement d'une bibliothèque préexistante. – skeggse

+0

Ancien Q mais je recommanderais Cython sur SWIG ou SIP. C'est * beaucoup * plus facile à utiliser, supporte C et C++ et a une meilleure documentation. J'ai essayé tous les 3 outils mentionnés ci-dessus plus Boost Python et Cython était le seul que j'étais en mesure de travailler dans un délai raisonnable. – Endophage

3

Je passe par moi-même. Ce n'est que quelques lignes dans MATLAB en utilisant mmreader, mais j'ai déjà soufflé deux jours de travail en essayant de comprendre comment extraire des images d'un fichier vidéo en numpy. Si vous avez suffisamment d'espace disque, et il ne doit pas être en temps réel, vous pouvez utiliser:

mplayer -noconsolecontrols -vo png blah.mov 

puis tirez les fichiers .png en utilisant numpy:

pylab.imread('blah0000001.png') 

Je sais que ce est incomplet, mais il peut encore vous aider. Bonne chance!

+0

Je te sens.J'évaluais si python serait un bon substitut à Matlab, et je le trouvais gravement déficient, surtout avec un simple traitement vidéo. –

3

J'ai utilisé ce script pour convertir un film à un tableau numpy + binaire magasin:

""" 
Takes a MPEG movie and produces a numpy record file with a numpy array. 

""" 
import os 

filename = 'walking' 
if not(os.path.isfile(filename + '.npy')): # do nothing if files exists 
    N_frame = 42 # number of frames we want to store 
    os.system('ffmpeg -i WALK.MOV.qt -f image2 foo-%03d.png') 
    # convert them to numpy 
    from numpy import zeros, save, mean 
    from pylab import imread 

    n_x, n_y, n_rgb = imread('foo-001.png').shape 

    mov = zeros((n_y, n_x, N_frame)) 

    for i_frame in range(N_frame): 
     name = 'foo-%03d.png' % (i_frame +1) 
     mov[:n_y,:n_x,i_frame] = flipud(mean(imread(name), axis=2)).T 

    os.system('rm -f foo-*.png') 
    save(filename + '.npy', mov) 

Notez que selon vos conventions, vous voudrez peut-être pas retourner l'image. vous pouvez ensuite le charger en utilisant:

load('walking.npy') 
Questions connexes