作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试同步 CSS 和 FFmpeg 颜色校正。目标是创建将 CSS bri-sat-con-gam 过滤器值转换为相应的 ffmpeg vals 的工具,反之亦然。
例如
-vf "eq=brightness=0.3:saturation=1.3:contrast=1.1"
filter="brightness(30%) saturate(130%) contrast(110%)"
最佳答案
这是核心功能:
static void create_lut(EQParameters *param)
{
int i;
double g = 1.0 / param->gamma;
double lw = 1.0 - param->gamma_weight;
for (i = 0; i < 256; i++) {
double v = i / 255.0;
v = param->contrast * (v - 0.5) + 0.5 + param->brightness;
if (v <= 0.0) {
param->lut[i] = 0;
} else {
v = v * lw + pow(v, g) * param->gamma_weight;
if (v >= 1.0)
param->lut[i] = 255;
else
param->lut[i] = 256.0 * v;
}
}
param->lut_clean = 1;
}
该过滤器仅在 8 位 YUV 输入上运行。此函数创建一个查找表,将所有 8 位输入值 0-255 映射到输出值。然后将该表应用于输入像素。
set_gamma
将用户提供的参数转换为上述函数中使用的最终值。
contrast
仅应用于亮度平面;色度平面的饱和度。
关于FFmpeg 色彩校正算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70139425/
我是一名优秀的程序员,十分优秀!