13 Stimmen

Das meistgenutzte Python-Modul für die Videoverarbeitung?

Ich muss es tun:

  1. Öffnen einer Videodatei
  2. Iterieren über die Einzelbilder der Datei als Bilder
  3. Analysieren Sie diesen Bildausschnitt des Videos
  4. Zeichnen Sie dieses Bild aus dem Video ein
  5. Erstellen Sie ein neues Video mit diesen Änderungen

OpenCV funktioniert nicht für meine Webcam, aber python-gst funktioniert. Ist dies möglich, mit python-gst?

Ich danke Ihnen!

7voto

Martin Beckett Punkte 92477

Meinen Sie damit, dass opencv keine Verbindung zu Ihrer Webcam herstellen kann oder die von ihr aufgezeichneten Videodateien nicht lesen kann?

Haben Sie versucht, das Video in einem anderen Format zu speichern?

OpenCV ist wahrscheinlich das am besten unterstützte Python-Bildverarbeitungsprogramm

3voto

Andrew Wagner Punkte 19909

Ich mache das gerade selbst durch. Es sind nur ein paar Zeilen in MATLAB mit mmreader, aber ich habe schon zwei Arbeitstage damit verbracht, herauszufinden, wie man Bilder aus einer Videodatei in Numpy zieht. Wenn man genug Speicherplatz hat und es nicht in Echtzeit sein muss, kann man das verwenden:

mplayer -noconsolecontrols -vo png blah.mov

und ziehen dann die .png-Dateien in Numpy mit:

pylab.imread('blah0000001.png')

Ich weiß, dass dies unvollständig ist, aber vielleicht hilft es Ihnen trotzdem. Viel Glück!

3voto

meduz Punkte 3478

Ich habe dieses Skript verwendet, um einen Film in ein Numpy-Array + Binärspeicher zu konvertieren:

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

Beachten Sie, dass Sie das Bild je nach Ihren Konventionen möglicherweise nicht spiegeln möchten. Sie können es dann mit :

load('walking.npy')

0voto

ZZambia Punkte 410

Erstellen Sie einfach einen C/C++-Wrapper für Ihre Webcam und verwenden Sie dann SWIG oder SIP, um von Python aus auf diese Funktionen zuzugreifen. Dann verwenden Sie OpenCV in Python, das ist die beste Open-Source-Computer-Vision-Bibliothek in freier Wildbahn.

Wenn Sie sich um die Leistung sorgen und unter Linux arbeiten, können Sie kostenlose Versionen von Intel Performance Primitives (IPP) herunterladen, die zur Laufzeit ohne Aufwand von OpenCV geladen werden können. Für bestimmte Algorithmen können Sie eine Leistungssteigerung von 200% erhalten, plus automatische Multicore-Unterstützung für die meisten zeitaufwendigen Funktionen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X