FFmpeg - Aplique desfoque no rosto

18

Estou tentando desfocar uma parte de um vídeo usando o FFmpeg (especificamente para desfocar um rosto).

Eu tenho tentado usar uma combinação de edição de linha do tempo e vários filtros bluring, mas não consigo encontrar uma maneira de desfocar apenas uma seção do vídeo.

Estou esperando por algo como:

-vf boxblur=enable='between(t,10,100)':width=20:height=20:x=400:y=200

Em que width / height é o tamanho da caixa desfocada e x / y são a localização da caixa desfocada.

É algo assim possível?

    
por occvtech 13.04.2015 / 18:44

1 resposta

24

É possível aplicar o desfoque temporal e espacial a um segmento / seção - supondo que a área que você deseja desfocar seja um local estático.


Imagemoriginaldefilhotedecachorropretonolaboratório.

Usandoumaimagemdemáscara


ImagemdamáscaraPNGemescaladecinzaeimagemborradaresultante.

Vocêpodecriarumaimagemdemáscaraemtonsdecinzaparaindicarqueaáreaficarádesfocada.Parafacilitarouso,eledeveteromesmotamanhodaimagemouvídeoquevocêdesejadesfocar.

Exemplousando alphamerge , boxblur e sobreposição :

ffmpeg -i video.mp4 -i mask.png -filter_complex "[0:v][1:v]alphamerge,boxblur=10[alf];[0:v][alf]overlay[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart maskedblur.mp4
  • A área branca é onde o desfoque ocorrerá, mas isso pode ser facilmente revertido com o negar filtrar por exemplo: [1:v]negate[mask];[0:v][mask]alphamerge,boxblur=10[alf]...

  • Você pode usar o filtro geq para gerar uma máscara, como um gradiente.

Desfocar área específica (sem máscara)

ffmpeg-iderpdog.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 derpdogblur.mp4

Observação: Os números de deslocamento x e y na sobreposição ( 60 e 30 neste exemplo) devem corresponder aos deslocamentos de corte.

O que este exemplo faz:

  1. Recorte a cópia para ser o tamanho da área a ser desfocada. Neste exemplo: uma caixa de 200 x 200 pixels com 60 pixels à direita ( x eixo) e 30 pixels abaixo ( y eixo) do canto superior esquerdo.
  2. Desfoque a área recortada.
  3. Sobreponha a área borrada usando os mesmos parâmetros x e y do filtro recortar .

Múltiplas manchas sobre áreas específicas (sem máscara)


Áreasdesfocadasnocantosuperioresquerdo,pertodocentroeparteinferior.

"[0:v]crop=50:50:20:10,boxblur=10[b0]; \
 [0:v]crop=iw:30:(iw-ow)/2:ih-oh,boxblur=10[b1]; \
 [0:v]crop=100:100:120:80,boxblur=10[b2]; \
 [0:v][b0]overlay=20:10[ovr0]; \
 [ovr0][b1]overlay=(W-w)/2:H-h[ovr1]; \
 [ovr1][b2]overlay=120:80"

Área específica não desfocada (sem máscara)

"[0:v]boxblur=10[bg];[0:v]crop=200:200:60:30[fg];[bg][fg]overlay=60:30"

Material adicional

por 15.04.2015 / 06:30

Tags