2009-09-26 7 views
12

Ho bisogno di:Il modulo Python più usato per l'elaborazione video?

  1. aprire un file video
  2. scorrere i fotogrammi del file come immagini
  3. fare alcune analisi in questa cornice immagine del video
  4. Draw in questa immagine del il video
  5. Creare un nuovo video con questi cambiamenti

OpenCV non funziona per la mia webcam, ma python-GST è di lavoro. È possibile usare python-gst?

Grazie!

+1

Anche se questo è vecchio, ho codice Python che accetta un nome file e restituisce un iteratore di immagini PIL. Posso postare il codice sorgente se qualcuno è interessato. – carl

risposta

6

Vuoi dire che opencv non può connettersi alla tua webcam o non può leggere i file video registrati da esso?

Hai provato a salvare il video in un altro formato?

OpenCV è probabilmente lo strumento di elaborazione delle immagini di pitone migliore supportato

+1

+1 per raccomandare OpenCV. – whatnick

0

Basta costruire un/++ involucro C C per la tua webcam e quindi utilizzare SWIG o SIP per accedere a queste funzioni da Python. Quindi usa OpenCV in Python che è la migliore libreria di visione artificiale open source in natura.

Se ti preoccupi delle prestazioni e lavori sotto Linux, puoi scaricare versioni gratuite di Intel Performance Primitives (IPP) che potrebbero essere caricate in fase di esecuzione con zero sforzi da OpenCV. Per determinati algoritmi è possibile ottenere un incremento del 200% delle prestazioni, oltre al supporto multicore automatico per la maggior parte delle funzioni che richiedono tempo.

+1

Ricorda che non molte persone sanno come creare wrapper per Python, e la domanda dell'OP si occupa principalmente di una libreria preesistente. – skeggse

+0

Vecchio Q ma consiglierei Cython su SWIG o SIP. È * molto * più facile da usare, supporta C e C++ e ha una documentazione migliore. Ho provato tutti e 3 gli strumenti sopra menzionati più Boost Python e Cython è stato l'unico in cui sono riuscito a lavorare in un tempo ragionevole. – Endophage

3

Sto attraversando questo me stesso. Sono solo un paio di righe in MATLAB che usano mmreader, ma ho già saltato due giorni lavorativi cercando di capire come tirare i fotogrammi da un file video in numpy. Se si dispone di sufficiente spazio su disco, e non deve essere in tempo reale, è possibile utilizzare:

mplayer -noconsolecontrols -vo png blah.mov 

e poi tirare le file .png in NumPy utilizzando:

pylab.imread('blah0000001.png') 

So che questo è incompleto, ma potrebbe comunque aiutarti. In bocca al lupo!

+0

Ti sento.Ho valutato se Python sarebbe stato un buon sostituto per Matlab e l'ho trovato gravemente carente, specialmente con una semplice elaborazione video. –

3

Ho usato questo script per convertire un film a un array + negozio binario NumPy:

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

nota che a seconda delle convenzioni, non si può decidere di capovolgere l'immagine. è quindi possibile caricarlo utilizzando:

load('walking.npy')