Der Alphamergenfilter funktioniert nur beim ersten Bild

361
Zain Ali

Ich versuche, den Unschärfefilter für ein bestimmtes Objekt ohne Rechteck zu implementieren. Ich habe Masken- und Beispielvideos, aber das Problem ist, dass das alphamerge Ergebnis des ersten Videoframes auf das gesamte Video angewendet wird (wie Sie ein statisches Bild über die gesamte Videolänge gelegt haben ) Ich habe den folgenden Befehl verwendet

ffmpeg -y -i sample_video.mp4 -i masked_image.png -filter_complex  "[0:v][1:v]alphamerge,boxblur=16[alf];[0:v][alf]overlay[v]" -map [v] -map 0:a -c:a copy -preset ultrafast test.mp4 

sample_video.mp4 masked_image.png

UPDATE: Ihre Lösung funktioniert ziemlich gut, aber jetzt beeinflusst der Unschärfeintensitätswert nicht die Unschärfeintensität

Maskenbild

Beispielbild

Ergebnis mit Boxblur = 10

Ergebnis mit Boxblur = 30

0

1 Antwort auf die Frage

1
Gyan

Ihre Maske ist ein einzelnes Bild, sodass das Motiv nicht erfasst wird. Ich gehe jedoch davon aus, dass die Überlagerungspixel statisch sind. Sie müssen die Maske wiederholen, da Alphamerge mit der kürzesten Eingabe endet und das Overlay den letzten Frame der sekundären Eingabe wiederholt.

ffmpeg -y -i sample_video.mp4 -loop 1 -i masked_image.png ... 
Ich habe für den obigen Fall (unter Verwendung eines Maskenbildes zum Anwenden des Unschärfeeffekts) beobachtet, dass der Unschärfeeffekt abnimmt, wenn Sie den Boxblur-Wert erhöhen, wie von 1-16 immer weiter zunimmt und danach abnimmt (unabhängig davon, wie viel Wert Sie wählen.) Haben Sie eine Idee, warum dies passieren könnte, oder einen besseren Vorschlag, Masken zum Verwischen zu verwenden? Zain Ali vor 6 Jahren 0
Kannst du Beispielbilder posten? Gyan vor 6 Jahren 0
Ich habe meine Frage aktualisiert Zain Ali vor 6 Jahren 0
Ändern Sie `boxblur = 16` in` boxblur = 16: ap = 0`. Wir wollen die Alpha-Ebene nicht verwischen. Gyan vor 6 Jahren 0