之前讲过使用FFmpeg的drawtext滤镜(把图片或文字加到视频上),而实际上,FFmpeg的滤镜很强大,远不止加字幕或加图片的功能。滤镜是很有趣的,可以把图片变模糊、变色、缩放旋转,等等。

本文介绍FFmpeg滤镜的使用。目的是让读者感受一下FFmepg的滤镜效果,这样在实际需要某种效果时,可以考虑使用FFmpeg。

小程这里直接使用FFmpeg的命令行来使用滤镜,不涉及写代码调用FFmpeg的内容,并且这里都是对图片进行滤镜处理,读者会看到很多有趣的处理效果。

但是,由于FFmpeg滤镜的内容很多,小程这里没有一一介绍,读者如果想详细了解这部分内容的话,可以查阅官方文档:
http://www.ffmpeg.org/ffmpeg-filters.html#Video-Filters

本文有较多图片。

(0)前提

先要让ffmpeg程序支持滤镜,对于FFmpeg的安装或编译,可参考其它文章,或可以关注“广州小程”微信公众号,里面有详细的介绍。

之前介绍过,让FFmpeg支持滤镜的话,需要在配置FFmpeg时指定使用avfilter:

./configure --enable-avfilter

最终编译出来的FFmepg是支持滤镜的,比如,小程的ffmpeg程序的滤镜信息是这样的:

这个ffmpeg程序已可用于滤镜处理,比如之前加字幕、加图片的操作,用的就是这个ffmepg程序。

在进行滤镜处理之前,先给出几张漂亮的原图:


最好看的当然是第三张。

(1)模糊

参数boxblur。

./ffmpeg -i 1.jpg -vf boxblur=2 blur1.jpg

值越大越模糊,以下是值分别为2、4、8的效果:


(2)变色

有几个办法。

(a)colorbalance

调整rgb某个维度的权重实现变色。

选项有三组,分别为rs/gs/bs、rm/gm/bm、rh/gh/bh。每一个选项都指定了目标颜色(rgb中的一个),s表现偏暗,m表现偏中间,h表现偏亮(且平滑)。

选项的值范围为[-1, 1],正数表示偏向目标颜色,负数表示远离目标颜色。

比如这三个命令:

./ffmpeg -i 1.jpg -vf colorbalance=rs=1 colorbalance1-1.jpg
./ffmpeg -i 1.jpg -vf colorbalance=rm=1 colorbalance1-2.jpg
./ffmpeg -i 1.jpg -vf colorbalance=rh=1 colorbalance1-3.jpg

得到的图片是这样的:


再比如把图片变得冷色一点:

./ffmpeg -i 2.jpg -vf colorbalance=rh=-0.6 colorbalance2.jpg

效果是这样的:

(b)colorchannelmixer

对rgba四个通道进行重新计算,并分别给定权重比例。

先看命令:

./ffmpeg -i 3.jpg -vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 colorchannelmixer3.jpg
./ffmpeg -i 2.jpg -vf colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131 colorchannelmixer2.jpg

每个通道的权重从0到1,先给red的计算权重,即red=redrr + bluerb + greenrg +
alpha
ra,然后分别是green跟blue的计算权重。

上面两个命令对应的效果是这样的:

(c)hue

改变色调,相当在调色板上调色。

./ffmpeg -i 2.jpg -vf hue=h=30:s=1 hue_30.jpg

s为饱和度,范围为[-10,10],默认为1。h为角度,不同角度有不同的颜色布局(类比调色板),范围为[0,360],超过360则相当于从0开始,默认为0。

以下效果为s=1(默认),h分别为30、60、90、120、160、180、210、250、280、320、360时的效果(在360时,就是原图):










再比如,只调饱和度s:

./ffmpeg -i 2.jpg -vf hue=h=0:s=-5 hue_s-5.jpg

以下效果为h=0(默认),s分别为-10、-5、0、1、5、10时的效果(在1时,就是原图):





(d)lut/lutyuv/lutrgb

./ffmpeg -i 2.jpg -vf lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val" lutyuv1.jpg
./ffmpeg -i 2.jpg -vf lutyuv="y=negval:u=negval:v=negval" lutyuv2.jpg
lutyuv用于yuv颜色空间。这两个命令的效果是一样的,都是反转,得到底片的效果:

./ffmpeg -i 2.jpg -vf lutyuv=y=negval lutyuv2.jpg
把亮度(y)反转,效果如下:

./ffmpeg -i 2.jpg -vf lutyuv="u=128:v=128" lutyuv3.jpg
把色度移除(uv),得到黑白图:

./ffmpeg -i 2.jpg -vf lutyuv="y=2*val" lutyuv4.jpg
提升亮度,效果如下:

./ffmpeg -i 2.jpg -vf lutyuv='u=1.2val:v=1.1val' lutyuv5.jpg
调整uv的值,效果如下:

(e)negate

反转,得到底片的效果,参数值为0或1,为1时表示把alpha通道也反转,默认为0。

./ffmpeg -i 3.jpg -vf negate=0 negate1.jpg

效果如下:

(f)swapuv

uv互换。

./ffmpeg -i 2.jpg -vf swapuv swapuv1.jpg

效果如下:

(3)裁剪

参数crop,支持裁剪多大、在哪个位置开始,也支持带变量的更复杂的裁剪。

./ffmpeg -i 1.jpg -vf crop=200:300

多媒体开发(6):滤镜实现各种图片效果 | Video-Filters | avfilter | 变色的更多相关文章

  1. Android开发常用开源框架:图片处理

    https://blog.csdn.net/SGQ_CSDN/article/details/79910709 Android开发常用开源框架:图片处理 框架名称 功能描述 Android Unive ...

  2. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  3. iOS开发之滤镜的使用技巧(CoreImage)

    一.滤镜的内容和效果是比较多并且复杂的 ,学习滤镜需要技巧 如下: 两个输出语句解决滤镜的属性选择问题: 1.查询效果分类中包含什么效果按住command 点击CIFilter 进入接口文件 找到第1 ...

  4. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  5. QImage与QPixmap加载图片效果(QImage不能拉伸图片,QPixmap默认拉伸图片)

    QImage与QPixmap加载图片 效果 . 分类: QT开发 qtQtQT PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent) {t ...

  6. Cocos2D添加精灵纹理滤镜实现图像复古效果的转换

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家知道Cocos2d本身是一个非常强悍的2d游戏引擎,其中自 ...

  7. jQuery框架开发一个最简单的幻灯效果

    在线演示 在这个课程中,我们将介绍如何使用jQuery来开发一个最简单的图片幻灯效果. 立刻观看互动课程:jQuery框架开发一个最简单的幻灯效果 阅读原文:jQuery框架开发一个最简单的幻灯效果

  8. LiveVideoStack Meet|深圳 多媒体开发新趋势

    2018年初始,音视频技术生态并不平静,Codec争夺愈加激烈,新一代标准的挑战一浪高过一浪:WebRTC的定版也为打通浏览器.移动端乃至IoT带来了机会:此外AI.区块链技术的兴起,催化着与多媒体领 ...

  9. javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)

    在上一篇<javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)>里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...

随机推荐

  1. 安装 R 包报错 clang: error: unsupported option '-fopenmp' 的解决方法

    MacOS 上安装 R 包 install.packages("data.table") 后面提示是否安装需要编译的版本: Do you want to install from ...

  2. Codeforces 1077F2 Pictures with Kittens (hard version)(DP+单调队列优化)

    题目链接:Pictures with Kittens (hard version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:数据量5000, ...

  3. elastalert

    http://blog.51cto.com/kexiaoke/1977481 什么是? ElastAlert是一个简单的框架,用于从弹性搜索中的数据中提取异常,尖峰或其他感兴趣的模式.在Yelp,我们 ...

  4. Mock8 moco框架如何返回一个cookie信息

    还是用之前的startupWithCookies.json这个文件,直接往里面添加上面的一个代码: [ { "description":"这是一个会返回cookies信息 ...

  5. mac安装postman

    [在线方式]: 1. chrome扩展中搜postman,选择Postman Interceptor 添加到chrome. 2.安装完毕后,点击地址栏右边对应的按钮 点击 Postman Chrome ...

  6. [物理学与PDEs]第2章第4节 激波 4.2 熵条件

    1.  R.H. 条件仅仅给出了越过激波时的能量守恒定律, 即热力学第一定律; 但客观的流体运动过程还需满足热力学第二定律, 即越过激波是个熵增过程: $$\bex S_1>S_0\quad(0 ...

  7. mpvue体验微信小程序开发

    微信小程序 https://developers.weixin.qq.com/miniprogram/introduction/index.html?t=18082114 微信小程序是一种全新的连接用 ...

  8. MyEclipse编码方式设置

    1.windows -> Preferences -> general -> Workspace:

  9. Linux中安装C++编译器codeBlock,并配置opencv链接库

    1.Linux中安装codeBlock https://blog.csdn.net/xinyunyishui/article/details/50967395 2.CodeBlock中的中文显示不完全 ...

  10. 在Windows上安装Arduino-IDE

    Arduino IDE的官方下载地址为:http://arduino.cc/en/Main/Software 也可以从我的网盘下载:win系统 1.8.9版本 链接:https://pan.baidu ...