2009-09-26 10 views
12

muszę:Najczęściej używany moduł Pythona do przetwarzania wideo?

  1. Otwórz plik wideo
  2. iteracyjne nad klatki pliku jako obrazy
  3. Czy jakieś analizy w tym obrazie klatki wideo
  4. remisu na tym wizerunek wideo
  5. utworzyć nowe wideo z tych zmian

OpenCV nie działa na mojej kamery, ale python-GST działa. Czy jest to możliwe przy użyciu python-gst?

Dziękujemy!

+1

Mimo że jest stary, mam kod Pythona, który pobiera nazwę pliku i zwraca iterator obrazów PIL. Mogę opublikować kod źródłowy, jeśli ktoś jest zainteresowany. – carl

Odpowiedz

6

Czy oznacza OpenCV nie można podłączyć do kamery lub nie można odczytać plików wideo nagranych przez niego?

Czy próbowałeś zapisywania wideo w innym formacie?

OpenCV jest prawdopodobnie najlepszym narzędziem obsługiwane przetwarzanie python obraz

+1

+1 za rekomendowanie OpenCV. – whatnick

0

Wystarczy zbudować C/C++ otoki dla kamery internetowej, a następnie użyć SWIG lub SIP dostęp do tych funkcji z Pythona. Następnie użyj OpenCV w Pythonie, który jest najlepiej otwartą biblioteką wizji komputerowej na wolności.

Jeśli martwić o wydajności i pracować pod Linuksem, można pobrać darmowe wersje Intel wydajności wbudowanych (IPP), które mogą być ładowane przy starcie z zerowym wysiłku z OpenCV. W przypadku niektórych algorytmów można uzyskać zwiększenie wydajności o 200% oraz automatyczne wsparcie dla wielu rdzeni dla większości czasochłonnych funkcji.

+1

Pamiętaj, że niewiele osób wie, jak tworzyć opakowania dla Pythona, a pytanie OP dotyczy głównie biblioteki wcześniejszej. – skeggse

+0

Stare Q ale polecam Cython przez SWIG lub SIP. Jest * znacznie * łatwiejszy w użyciu, obsługuje C i C++ i ma lepszą dokumentację. Wypróbowałem wszystkie 3 wyżej wymienione narzędzia oraz Boost Python, a Cython był jedynym, w którym mogłem pracować w rozsądnym czasie. – Endophage

3

Idę przez ten sam. To tylko kilka linijek w MATLAB-ie za pomocą programu mmreader, ale już dwa dni pracowałem nad tym, by przekonać się, jak przeciągnąć klatki z pliku wideo na numpy. Jeśli masz wystarczająco dużo miejsca na dysku, a to nie musi być w czasie rzeczywistym, można użyć:

mplayer -noconsolecontrols -vo png blah.mov 

a następnie wyciągnąć .png pliki do numpy używając:

pylab.imread('blah0000001.png') 

wiem to jest niekompletna, ale nadal może ci pomóc. Powodzenia!

+0

Czuję cię.Oceniam, czy Python byłby dobrym substytutem Matlab, i stwierdził, że bardzo go brakuje, szczególnie przy prostym przetwarzaniu wideo. –

3

użyłem tego skryptu przekonwertować film do tablicy numpy + sklepu binarnym:

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

pamiętać, że w zależności od konwencji może nie chcieć, aby odwrócić obraz. możesz go następnie załadować, używając:

load('walking.npy') 
Powiązane problemy