FFMPEG的filter滤镜使用

前段时间研究了下ffmpeg的滤镜功能,效果还不错,部分滤镜的描述字符串,需要一些图像处理的的知识,如图像的伽马值、亮度、对比度等对图像的影响。

主要使用了部分滤镜:

const char *filter_mirror = "crop=iw/2:ih:0:0,split[left][tmp];[tmp]hflip[right]; \
												[left]pad=iw*2[a];[a][right]overlay=w";
const char *filter_watermark = "movie=test.jpg[wm];[in][wm]overlay=5:5[out]";
const char *filter_negate = "negate[out]";
const char *filter_edge = "edgedetect[out]";
const char *filter_split4 = "scale=iw/2:ih/2[in_tmp];[in_tmp]split=4[in_1][in_2][in_3][in_4];[in_1]pad=iw*2:ih*2[a];[a][in_2]overlay=w[b];[b][in_3]overlay=0:h[d];[d][in_4]overlay=w:h[out]";
const char *filter_vintage = "curves=vintage";//复古
const char *fileter_vignette = "vignette=PI/4";//光晕
const char *fileter_colorDown = "colorlevels=rimin=0.058:gimin=0.058:bimin=0.058";// 变暗
const char *fileter_colorUp = "fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'";// 增加对比度
const char *fileter_hqdn3d = "hqdn3d=luma_spatial=15.0";//降噪
const char *fileter_strong_contrast = "curves=strong_contrast";//强对比度
const char *fileter_lighter = "curves=lighter";//变量

// "scale=iw/2:ih/2[in_tmp];[in_tmp]split=4[in_1][in_2][in_3][in_4];[in_1]pad=iw*2:ih*2[a];[a][in_2]overlay=w[b];[b][in_3]overlay=0:h[d];[d][in_4]overlay=w:h[out]" 视频组和,本条语句是4个输入视频源的组合
// "crop=iw/2:ih:0:0,split[left][tmp];[tmp]hflip[right]; [left]pad=iw*2[a];[a][right]overlay=w" 镜像
// "movie=test.jpg[wm];[in][wm]overlay=5:5[out]" 水印
// "fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'";锐化
// "fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'"; 低通滤波
// "fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'"; 高通滤波
// "colorlevels=rimin=0.058:gimin=0.058:bimin=0.058"; 变暗
// "colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96"; 增加对比度
// "hqdn3d" 降噪
// "curves=strong_contrast"强对比度
// "curves=vintage" 复古
// "edgedetect[out]" 边缘检测
// "negate[out]" 底片
/*
curves = 
‘none’
‘color_negative’ // 彩色底片
‘cross_process’
‘darker’ // 变暗
‘increase_contrast’// 增加对比度
‘lighter’ // 变亮
‘linear_contrast’ // 线性对比
‘medium_contrast’
‘negative’ // 底片
‘strong_contrast’
‘vintage’ // 复古
*/

调用av_buffersrc_add_frame(buffersrc_ctx, pframe)对编码前的视频帧进行处理处理完便可编码发送。

以下为测试的效果:

1.原图

2.复古

3.光晕

4.降噪

5.强对比度

6.变亮

7.变暗

以上为效果图,可以看看,降噪效果还不错,如果你觉得图中效果不够好,可以去调节滤镜参数去调节效果。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值