Fügen Sie Videos mit OpenCV + Python einen gefälschten Tilt-Shift-Effekt hinzu

Die Quelle ist https://github.com/osoken/tiltshift_effector

Ein Python-Skript, das einen gefälschten Tilt-Shift-Effekt auf eine Videodatei wie ".mov" anwendet. Ich habe "Numpy", "Scipy", "OpenCV", "Pillow" verwendet. Für Python 2.7.

Das Prinzip ist einfach: Kombinieren Sie einfach das Originalbild und das unscharfe Bild, während Sie es maskieren. Original orig.png

Maske mask.png

Verschwommenes Bild blur.png

Nach der Synthese out.png

Eine Funktion, die eine Maske generiert.

def gen_mask(sz, t, tc, c, bc):
  bounds = (0,limit_value(int(sz[1]*t),0,sz[1]),limit_value(int(sz[1]*(t+tc)),0,sz[1]),limit_value(int(sz[1]*(t+tc+c)),0,sz[1]),limit_value(int(sz[1]*(t+tc+c+bc)),0,sz[1]),sz[1]);
  mask = np.array(Image.new('L', sz));
  mask[bounds[0]:bounds[1],:] = 255;
  for i in range(bounds[1],bounds[2]):
    mask[i,:] = 255 - int(255.0/float( bounds[2] - bounds[1] ) * float(i - bounds[1]));
  mask[bounds[3]:bounds[2],:] = 0;
  for i in range(bounds[3],bounds[4]):
    mask[i,:] = int(255.0/float( bounds[4] - bounds[3] ) * float(i - bounds[3]));
  mask[bounds[4]:bounds[5],:] = 255;
  mask = Image.fromarray(mask);
  return mask;

sz ist ein Taple von (Breite, Höhe). "t", "tc", "c", "bc" sind Zahlen von "0,0" bis "1,0", "t" ist der obere weiße Bereich, "c" ist der mittlere schwarze Bereich, "tc" ist " Zwischen t "und" c "drückt" bc "die Breite des Gradienten zwischen" c "und dem weißen Bereich darunter aus, wobei das Gesamtverhältnis" 1,0 "beträgt.

Um das unscharfe Bild zu erzeugen, habe ich den gaussian_filter in scipy so wie er ist verwendet.

def gen_blurred_image(image, blur_factor):
  if blur_factor == 0:
    return image;
  im = np.array(image);
  return Image.fromarray(ndimage.gaussian_filter(im, sigma=[blur_factor, blur_factor, 0]));

Es ist sinnlos, die Variable "image" in den Typ "image" von "PIL" zu konvertieren, sie nur zum Filtern in den Typ "numpy.array" zu konvertieren und sie sofort zurückzugeben, jedoch unter Berücksichtigung anderer Operationen Es sieht aus wie das ... blur_factor ist die Stärke der Unschärfe, angegeben als schwebende Fraktion.

Kombinieren Sie die Maske und das unscharfe Bild mit der Paste-Funktion von PIL.

def paste_image(base, layer, mask):
  im = base;
  im.paste(layer, mask = mask);
  return im;

Sobald Sie fertig sind, müssen Sie nur noch das Video öffnen und für jedes Bild dieselbe Verarbeitung anwenden.

  cap = cv2.VideoCapture('input.mov');
  orig_size = (int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)));
  out = cv2.VideoWriter('output.mov', cv2.cv.CV_FOURCC('m','p','4','v'), int(cap.get(cv2.cv.CV_CAP_PROP_FPS)), orig_size);
  mask = gen_mask(orig_size, 0.4, 0.15, 0.05, 0.1);
  while cap.isOpened():
    ret,im_orig = cap.read();
    if ret == True:
      im = Image.fromarray(im_orig);
      im_blur = gen_blurred_image(im, 2.0);
      im = np.array(paste_image(im, im_blur, mask));
      cv2.imshow('view', im);
      out.write(im);
      key = cv2.waitKey(1);
      if key == 27:
        break;
    else:
      break;

  out.release();
  cap.release();
  cv2.destroyAllWindows();

Die Version im Repository verarbeitet Eingabeoptionen usw., sodass die Anzahl der Zeilen groß ist, aber im Wesentlichen ist dies so. Ich passe auch die Bildqualität und Sättigung an. Der letzte key == 27 in der Schleife endet vorzeitig mit esc.

Recommended Posts

Fügen Sie Videos mit OpenCV + Python einen gefälschten Tilt-Shift-Effekt hinzu
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Speichern Sie Videos Frame für Frame mit Python OpenCV
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
So beschneiden Sie ein Bild mit Python + OpenCV
Der einfachste Weg, OpenCV mit Python zu verwenden
[Python] Umgang mit japanischen Zeichen mit openCV
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Binarisierung mit OpenCV / Python
Einführung in OpenCV (Python) - (2)
So fügen Sie HDA Hilfe hinzu (mit Python-Skriptbonus)
So schleifen und spielen Sie ein GIF-Video mit openCV ab
Zeigen Sie das Bild der USB-Kamera mit OpenCV von Python mit Raspeye an
Stellen Sie mit Python eine Verbindung zu BigQuery her
"Apple-Verarbeitung" mit OpenCV3 + Python3
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
Stellen Sie mit Python eine Verbindung zu Wikipedia her
YouTube-Videoverwaltung mit Python 3
Post to Slack mit Python 3
[Python] Verwenden von OpenCV mit Python (Basic)
Loop-Video-Laden mit opencv
Erstellen Sie mit python wxpython + openCV ein einfaches Videoanalysetool
Gesichtserkennung mit Python + OpenCV
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
Schneiden Sie mit Python + OpenCV jede Sekunde ein Bild aus einem Video aus
Verwenden von OpenCV mit Python @Mac
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Ich habe versucht, die Videowiedergabezeit anzuzeigen (OpenCV: Python-Version)
Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Leuchtendes Leben mit Python und OpenCV
Python: So verwenden Sie Async mit
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Fügen Sie mit ArcPy Felder zu Features hinzu
[Python] Mit Python in eine CSV-Datei schreiben
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Schön dich mit Python zu treffen
Versuchen Sie, Facebook mit Python zu betreiben
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Ausgabe in eine CSV-Datei mit Python
Python 2.7 Fügen Sie Dash.app japanische Dokumentation hinzu
Konvertieren Sie die Liste mit Python in DataFrame
MP3 → WAV-Konvertierung mit Python
Schwanzrekursion mit Python2 durchführen
Erste Schritte mit Python
Einfache Python + OpenCV-Programmierung mit Canopy
Was tun mit PYTHON Release?
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Schneiden Sie das Gesicht mit Python + OpenCV aus
Gesichtserkennung mit Kamera mit opencv3 + python2.7
Laden Sie das GIF-Bild mit Python + OpenCV
So berechnen Sie das Datum mit Python
Finden Sie Bildähnlichkeit mit Python + OpenCV
Verwenden Sie OpenCV mit Python 3 in Window
Mit Python 3 einfach auf Twitter posten