J'essaie de brouiller une partie d'une vidéo en utilisant FFmpeg (spécifiquement pour brouiller un visage).
J'ai essayé d'utiliser une combinaison de montage chronologique et les différents filtres de flou, mais je ne trouve pas de moyen de flouter seulement une section de la vidéo.
Il est possible d'appliquer un flou temporel et spatial à un segment / une section - en supposant que la zone à flouter est un emplacement statique.
Image originale de chiot de laboratoire noir.
Utilisation d'une image de masque
Image de masque PNG en niveaux de gris et image floue résultante.
Vous pouvez créer une image de masque en niveaux de gris pour indiquer la zone à estomper. Pour plus de facilité d'utilisation, elle doit être de la même taille que l'image ou la vidéo que vous souhaitez flouter.
La zone blanche est l'endroit où le flou se produira, mais cela peut facilement être inversé avec le filtre négatif par exemple:[1:v]negate[mask];[0:v][mask]alphamerge,boxblur=10[alf]...
Vous pouvez utiliser le filtre geq pour générer un masque tel qu'un dégradé.
Remarque: Les nombres de décalage x et y dans la superposition ( 60et 30dans cet exemple) doivent correspondre aux décalages de recadrage.
Ce que fait cet exemple:
Recadrez la copie à la taille de la zone à rendre floue. Dans cet exemple: une zone de 200x200 pixels qui est de 60 pixels à droite ( xaxe) et 30 pixels vers le bas ( yaxe) à partir du coin supérieur gauche.
Flou la zone recadrée.
Superposez la zone floue en utilisant les mêmes paramètres xet les yparamètres du filtre de recadrage .
Flous multiples sur des zones spécifiques (sans masque)
Zones floues en haut à gauche, près du centre et en bas.
Merci beaucoup pour ta réponse. Tout cela est très logique. En remarque, cela a également donné un sens au filtre divisé! En outre, pourrait-il être possible grâce à des expressions arithmétiques de déplacer dynamiquement la zone floue autour de l'image? IE dans le but de brouiller le visage d'une personne qui se déplace de façon non linéaire?
occvtech
Merci encore! Je vais essayer de le faire. Je sais qu'un éditeur non linéaire serait 1000 fois plus facile ici, mais j'espère traiter plusieurs fichiers par lots et je ne veux pas attendre le processus d'importation / image clé / exportation. Merci encore!
occvtech
1
FFMPEG offre-t-il d'autres formes que les boîtes, comme les cercles?
dim
@LordNeckbeard J'utilise cmd et je veux utiliser l'exemple 1 mais lorsque j'exécute le code, j'obtiens cette erreurUnrecognized option 'filter_complex[0:v]crop=200:200:60:30,boxblur=10[fg];[0:v][fg]overlay=60:30[v]-map [v] -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4'. Error splitting the argument list: Option not found
Jim
1
@Jim J'ai remarqué qu'il manquait un devis à mon exemple de commande. Votre commande devrait ressembler à ceci:ffmpeg -i input.mp4 -filter_complex "[0:v]crop=200:200:60:30,boxblur=10[fg]; [0:v][fg]overlay=60:30[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4
llogan
0
Pour le cas où l'on n'aime pas le bord tranchant du flou, j'ai fait un script qui superpose différentes étapes de flou afin que le bord ne soit pas net et qu'il ressemble à ceci:
Vous pouvez modifier les paramètres dans la dernière et l'avant-dernière ligne, les deux derniers paramètres entre les marques de quatation sont le chemin vers votre vidéo et la vidéo de sortie (en supposant qu'ils soient placés dans le répertoire de travail). Dans l'avant-dernière ligne:
les deux premiers chiffres indiquent la taille de la zone initiale à laquelle le flou maximum sera appliqué,
les deux seconds indiquent leurs coordonnées x et y,
les trois derniers indiquent les temps en secondes où le flou doit être appliqué,
"25" dans cet exemple indique qu'il y aura 25 cases appliquées les unes sur les autres)
le "1" suivant indique que les boîtes plus grandes avec moins de flou devraient être juste un pixel plus larges que leurs prédécesseurs
le deuxième "1" indique que le flou doit augmenter de un jusqu'à ce que jusqu'à 25 maximum (par le haut)
"30" indique la marge qui est prise en considération pour appliquer le flou, donc augmenter cette valeur rend le flou plus respectueux de son environnement. L'augmentation de cette valeur résout également l'erreur textée commeInvalid chroma radius value 21, must be >= 0 and <= 20
En l'exécutant, on devrait obtenir une sortie comme celle-ci (elle est écrite dans un fichier qui peut être exécuté et imprimé sur la sortie qui peut être copypastée et exécutée):
Unrecognized option 'filter_complex[0:v]crop=200:200:60:30,boxblur=10[fg];[0:v][fg]overlay=60:30[v]-map [v] -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4'. Error splitting the argument list: Option not found
ffmpeg -i input.mp4 -filter_complex "[0:v]crop=200:200:60:30,boxblur=10[fg]; [0:v][fg]overlay=60:30[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4
Pour le cas où l'on n'aime pas le bord tranchant du flou, j'ai fait un script qui superpose différentes étapes de flou afin que le bord ne soit pas net et qu'il ressemble à ceci:
Au lieu de cela:
Il s'agit d'un script python:
Vous pouvez modifier les paramètres dans la dernière et l'avant-dernière ligne, les deux derniers paramètres entre les marques de quatation sont le chemin vers votre vidéo et la vidéo de sortie (en supposant qu'ils soient placés dans le répertoire de travail). Dans l'avant-dernière ligne:
Invalid chroma radius value 21, must be >= 0 and <= 20
En l'exécutant, on devrait obtenir une sortie comme celle-ci (elle est écrite dans un fichier qui peut être exécuté et imprimé sur la sortie qui peut être copypastée et exécutée):
la source