本文汇总了ffmpeg关于色彩处理和透明度处理的各种滤镜

所有颜色都可以通过3种基本颜色的组合来创建:红色,绿色和蓝色任何颜色表示为混合这三种颜色的各种强度的结果,通常以0到255(256 = 216)或十六进制 从x00到xff。

当彩电被发明出来的时候,彩色电视就必须在黑白电视机上播放。基于人眼对绿色的敏感程度,对红色的敏感度降低,对蓝色的敏感度更低,开发出了一种新的颜色空间YUV和后来的Y’CbCr。

RGB和YUV对比

RGB

YUV (Y'CbCr)

描述

添加红色、绿色和蓝色光的加色空间

图像被划分为1个亮度和2个色度分量

组件

R = 红色通道

Y' = luma (亮度)

组件

G = 绿色通道

U = Y' - B = Cb (luma- 蓝色)

组件

B = 蓝色通道

V = Y' - R = Cr (luma - 红色)

用途

电脑、数码相机等

电视、视频等

RGB像素格式修改,使用lutrgb滤镜

要改变RGB输入格式的特定通道,我们使用lutrgb滤波器。 它通过将r,g和b参数的值设置为0到255(255以上的任何值被认为是255)来调整色彩平衡

使用lutrgb滤镜来修改三个颜色的值

例如:

ffplay scenery.mp4 -vf lutrgb=r=200  (rgb:0-255)

色彩均衡

要调整红色,绿色或蓝色通道的亮度,我们设置一个从0到255的数字,并将其输入为lutrgb滤镜的r,g或b参数。 我们还可以对输入值进行分(减)或乘(增),例如将蓝色强度加倍,我们可以使用表达式lutrgb = b = val * 2。

YUV像素格式的修改,使用lutrgb滤镜

要修改YUV格式的组件,我们使用lutyuv过滤器。 y参数调整亮度(亮度),u参数调整蓝色平衡,v参数调整红色平衡。

例如:

使用lutyuv滤镜实现黑白效果

ffmpeg  -i 1.mpg -vf lutyuv=u=128:v=128  lutyuv.mpg   (yuv 0-256)

亮度校正,使用lutyuv滤镜

在RGB颜色模型中,亮度由三种颜色组合而成,在YUV (Y'CbCr)模型中直接与Y (luma)参数设置。例如,要将亮度调整到90%的输入,我们可以使用lutyuv=y=val*0.9的表达式。

色调和饱和度设置

表示RGB色彩空间的另一种方法是HSB(HSV),色相饱和度 - 亮度(色调 - 饱和度值)色彩空间。 它使用圆柱坐标系统代替线性立方体,其中色相是围绕中心垂直轴的角度,饱和度是与该轴的距离。 对于色调和饱和度调整,使用hue滤镜

例如ffplay -i coconut.jpg -vf hue=60

色调s的取值范围为0-360

colorbalance滤镜,修改输入帧的原色强度(红、绿、蓝)。

该滤镜允许输入帧在阴影、中间色调或高亮区域进行调整,以达到红青色、绿品红或蓝黄的平衡。

包含如下参数:

调整红色、绿色和蓝色阴影(最暗的像素)。

rs

gs

bs

调整红色、绿色和蓝色中间色调(中等像素)。

rm

gm

bm

调整红色、绿色和蓝色高光(最亮的像素)。

rh

gh

bh

允许的选项值范围是[-1.0,1.0]。默认值是0。正数调整值将平衡移向原色,负数调整值移向补色。

下图为原图,对该图片进行调整

添加红色阴影/绿色阴影

ffplay test.jpg  -vf colorbalance=rs=0.5

ffplay test.jpg  -vf colorbalance=gs=0.5

对中间色调调整

ffplay test.jpg  -vf colorbalance=rm=0.5

ffplay test.jpg  -vf colorbalance=rm=-0.5

对亮色进行调整

ffplay test.jpg  -vf colorbalance=gh=0.5

ffplay test.jpg  -vf colorbalance=gh=-0.5

colorlevels滤镜,使用层来调整输入视频

例子:

让视频输出暗色调

ffplay scenery.mp4 -vf colorlevels=rimin=0.058:gimin=0.058:bimin=0.058

增强对比度

ffplay scenery.mp4 -vf colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96

使视频变亮

ffplay scenery.mp4 -vf colorlevels=rimax=0.902:gimax=0.902:bimax=0.902

增加亮度

ffplay scenery.mp4 -vf colorlevels=romin=0.5:gomin=0.5:bomin=0.5

extractplanes滤镜,从输入视频流分离单独的颜色通道成为灰度视频流

参数值 planes:

yuv/rgb

例子:

提取亮度和U,V颜色分量到3个灰度输出

ffmpeg -i scenery.mp4  -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]’ v.avi

geq滤镜,可以使用各种函数实现各种效果具体参数参数官方文档

http://ffmpeg.org/ffmpeg-all.html#toc-geq

视频水平翻转

ffplay scenery.mp4 -vf "geq='p(W-X\,Y)'"

生成角度为PI/3,波长为100像素的二维正弦波:

ffplay scenery.mp4 -vf "geq=128 + 100*'sin(2*(PI/100)*(cos(PI/3)*(X-50*T)+ sin(PI/3)*Y))':128:128"

生成神秘花哨的光

ffplay scenery.mp4 -vf "geq='random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02)':128:128"

生成浮雕效果

ffplay scenery.mp4 -vf "format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'"

根据像素位置改变rgb分量

ffplay scenery.mp4 -vf  "geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'"

创建一个与输入大小相同的径向梯度(也请参阅vignette过滤器):

ffplay scenery.mp4 -vf "geq=lum=255*'gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0)',format=gray”

curves滤镜,使用曲线进行颜色调整。

参数比较复杂这里就不列举了,直接参考官网

http://ffmpeg.org/ffmpeg-all.html#curves-1

实现复古效果

ffplay scenery.mp4 -vf curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'

透明度处理

colorkey滤镜,RGB颜色键控

滤镜接受以下选项:

color

设置作为透明的颜色

similarity

与色键的相似度百分比。

0.01只匹配精确的键颜色,而1.0则匹配所有颜色(相当于直接透明了)

blend

混合百分比

0.0使像素完全透明或者完全不透明。

更高的值产生半透明像素,透明度越高,像素颜色越接近色键

例子:使图片半透明混合到视频上

ffmpeg -i scenery.mp4  -i tc.mp4 -filter_complex "[1:v]colorkey=#00FFFFFF:0.6:1.0[ckout];[0:v][ckout]overlay=x=W-w-10:y=0"  colorkey.mp4

chromakey滤镜,效果和参数与colorkey类似

色键滤镜。色键合成技术是指将前景图像的背景设置为一种纯色(蓝色、绿色)的幕,其色调有极大的高饱和度彩色,与前景图像中的事务行程鲜明区别。后期的处理中利用这个差别抠出前景图中的事物,再将抠出的事物图像置于需要的背景图像上,得到完整的合成画面。该滤镜可以将图像中的指定颜色部分的像素替换为透明。其接受一下选项:

color

指定要被替换为透明的颜色

similarity

设置一个百分比,当像素的颜色与指定颜色的相似度达到该值时。被替换0.01为完全相同,为1时匹                  配任何颜色

blend

融合程度(百分比)0.0时将像素替换为完全透明,或者完全不透明,值越高则透明度越高,透明度越高    那么像素的颜色与设定的color越像

yuv

标明传入的color选项已经是YUV格式而不是RGB。若使用了该选项,那么将“green”或者“red”作为color选项的值将没有意义。该选项可以用于输入准确的十六进制YUV值。

例如把一个绿色背景的人的视频抠出来合并到另外一个视频上

ffmpeg -i scenery.mp4 -i person.mp4  -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]” output.mp4

chromakey滤镜主要处理YUV数据,所以一般来说绿幕处理更有优势;而colorkey处理纯色均可以,因为colorkey主要以RGB数据为主

例如将女神的视频叠加到另外一个风景图上

ffmpeg -i scenery.mp4 -i shen.mov -filter_complex "[1:v]chromakey=0x00000000:0.01:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]” output.mp4

备注:shen.mov mov格式包含透明图层可以使用0x000000把透明色抠出来

颜色修改参考:https://www.jianshu.com/p/f2a94de1c26a

RGB和YUV颜色对比,使用ffmpeg颜色处理,视频混合,透明度处理相关推荐

  1. ffmpeg图片与视频命令笔记

    引言 ffmpeg中图片转换 RGB和YUV ffmpeg图片命令 rtmp和rtsp流 一.什么是RTSP 二.RTSP.RTP.RTCP之间关系 三.RTSP交互过程 ffmpeg中视频相关 ff ...

  2. FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战

    5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...

  3. Metal之探究理解视频渲染RGB与YUV颜色编码

    一.颜色编码 ① RGB 颜色编码 RGB 三个字母分别代表了 红.绿.蓝,这三种颜色作为三个基底颜色,将它们以不同的比例相加,可以产生多种多样的颜色. RGB 图像中,每个像素点都有红.绿.蓝三个基 ...

  4. 视音频数据处理入门:RGB、YUV像素数据处理【转】

    转自:http://blog.csdn.net/leixiaohua1020/article/details/50534150 ==================================== ...

  5. RGB、YUV像素基础知识及处理数据

    RGB.YUV像素基础知识及处理数据 目录 RGB YUV RGB.YUV像素数据处理 转载自Gemfield的知乎文章:从YUV到RGB 转载自雷神的博客:视音频数据处理入门:RGB.YUV像素数据 ...

  6. java rgb转yuv_【转】总结各种RGB转YUV的转换公式

    最近在学习视频的颜色空间转换,由于摄像机拍出来的视频很多都是用YUV格式保存的,而颜色空间的转换必须在RGB颜色模型上才能完成,所以第一步自然就是将YUV颜色模型转成RGB颜色模型.在网上查到了许多的 ...

  7. RGB与YUV格式简介

    (1) RGB格式简介 RGB色彩模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的.图像中每一个像素的RGB分量都分配一个0~25 ...

  8. 【opencv图像基础】图像常见的通道模式:RGB、YUV、HSV

    1. RGB 2. YUV YUV是被电视系统所采用的一种颜色编码方法.RGB 信号经过矩阵变换得到亮度信号Y和两个色差信号R- Y(即U).B-Y(即V). YUV色彩空间十分重要是因为表示亮度的Y ...

  9. RGB与YUV的转换

    计算机领域,RGB被称为基色分量,组合后能显示的颜色叫做颜色空间,一般取值范围从0-255(2^8,可以显示1600万多种颜色:现在有的显示器为10位位深,即2^10,约可以显示10亿种颜色) 还有一 ...

最新文章

  1. 为什么不应该使用“volatile”类型
  2. HBase 参考指南 3.0 翻译活动期待大家的参与 | ApacheCN
  3. 4.11 一维到三维推广-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. cpc卡内计费信息异常包括_今日头条信息流广告投放效果好吗?信息流广告计费方式怎么收费?...
  5. 老男孩python分享视频
  6. 手把手带你入门 Docker Compose
  7. STORM的三种事务
  8. M2M技术、标准与智慧城市顶层设计方法
  9. 商城小程序上新的物流助手功能,可以为商家运营带来什么帮助?
  10. matlab 求虚数的反正切,matlab中的反正切函数
  11. html水晶按钮图片,20个纯CSS3实现的彩色透明水晶按钮
  12. 疾病抗争从未停止,糖尿病数据可视化分析
  13. Django视图层模版层全面解析全网最细的教程
  14. 特价机票退票费高达80% 律师称航班延误应补偿-特价机票-退票费-霸王条款
  15. 词频统计以及分析(词云制作)
  16. spss度量 名义 有序
  17. 基于深度学习的大脑性别差异分析
  18. SAP ABAP 配置表开发常见问题总结与开发指南(SM30 SM34 SE54)
  19. 每个程序员都应当知道的编译器优化知识
  20. 封装的three.js饼图vue组件

热门文章

  1. 服务器千兆网卡显示百兆,windows10系统查看网卡是千兆还是百兆的方法
  2. ADO数据库连接中的Integrated Security和Persist Security Info参数的作用
  3. 淘宝小部件在 2021 双十一中的规模化应用
  4. 程序员的奋斗史(四十五)——大学断代史(九)——独自南下的岁月
  5. 华为硬件工程师手册_华为,英飞凌,中兴硬件工程师面试题
  6. 如何利用阿里云赚钱_5种利用云赚钱的策略
  7. 183套免费简历模板,助大伙找个好工作
  8. 软件开发质量改进措施_改进可能是软件开发人员面临的最大挑战,因此我们该如何做...
  9. 利用百度云盘同步Zotero
  10. 【英语月总结】11月--秋鸣啾啾,积少成多