使用 FFmpeg 仅增强图像的一部分的对比度?

Enhance the contrast of only a portion of an image using FFmpeg?

我可以使用以下命令增强整个图像的对比度 FFmpeg eq filter:

ffmpeg -i input.png -vf eq=contrast=2 -c:a copy output.png

但是我可以使用 FFmpeg 只增强图像的一部分(比如第二象限)的对比度吗?我检查了另一个关于 how to apply a filter only on a certain duration of a film 的 post。为了我的目的,我可以以某种方式在上面的代码中插入类似 enable='between(x,0,10)*between(y,0,10)' 的东西吗?谢谢

square/rectangle地区

如果要应用效果的区域是正方形或矩形,您可以:

  1. crop一个区域
  2. 对裁剪区域应用eq滤镜
  3. overlay原始区域上方的裁剪区域

将 eq 应用于右上象限的示例:

ffmpeg -i input.png -filter_complex "crop=in_w/2:in_h/2:out_w:0,eq=contrast=2[c];[0][c]overlay=overlay_w:0" output.png

复杂的形状

使用与图像大小相同的灰度蒙版:

ffmpeg -i image.jpg -i mask.png -filter_complex "[0]eq=contrast=2[contrast];[contrast][1]alphamerge[alf];[0][alf]overlay=format=auto" output.png