gpt4 book ai didi

ffmpeg 将白色转换为 alpha

转载 作者:行者123 更新时间:2023-12-04 22:58:04 25 4
gpt4 key购买 nike

你好,我用我的相机拍了一张照片:一张白纸上的方框图;我正在尝试将白色转换为透明并保留黑色框架。
所以我开始制作 1 个只有 2 种颜色的调色板以使颜色均匀,并用 1 个调色板添加透明度

ffmpeg -f lavfi -i "color=color=white:100x100" -f lavfi -i "color=color=black:100x100" -filter_complex "[0][1]hstack" -frames:v 1 blackwhite.png`
ffmpeg -i blackwhite.png -filter_complex "[0]split[a][b];[a]palettegen[pal1];[b]palettegen=reserve_transparent=on:transparency_color=white[pal2]" -map [pal1] palette1.png -map [pal2] palette2.png
然后我映射框架的图像 png 以将白色转换为透明并将结果覆盖到红色背景
ffmpeg -i image.png -i palette1.png -i palette2.png -i background.png -filter_complex "[0:v][1:v]paletteuse=dither=bayer[a],[a]split[a1][a2];[a1][2:v]paletteuse=alpha_threshold=128[c];[3:v][c]overlay[d]" -map [a2] -c:v png out.png -map [d] -c:v png out1.png
映射到第一个调色板的png(作为测试)应该是纯黑色和白色,第二个完全没有透明度并覆盖了背景
我究竟做错了什么?

最佳答案

好的,我想出了一个使用 alpha 合并过滤器的方法,不需要第二个允许透明的调色板。
所以我开始简单

ffmpeg -i image.png -i palette.png -filter_complex "paletteuse=dither=bayer" image2colors.png
ffmpeg -i background.png -i image2colors.png -filter_complex "alphamerge" out.png
将整个图像转换为 alpha channel (黑色和白色都是透明的)
ffmpeg -i image2colors.png -i background.png -filter_complex "[0]split[a][b];[a][b]alphamerge[c];[1][c]overlay[d]" -map [d] out.jpeg
这使颜色保持白色并使绘图的黑色透明,当覆盖时变成红色,白色也不再那么明亮,就像它具有某种透明度
这解决了这个问题
ffmpeg -i image2colors.png -i background.png -filter_complex "[0]split[a][b];[a]negate[n];[b][n]alphamerge[c];[1][c]overlay[d]" -map [d] out.jpeg
这给了我一个完美的黑色框架,覆盖在彩色背景上的 alpha channel 上。(jpeg 显示覆盖正确)
似乎 alpha-merge 选择了黑色而不是白色。
我发布了我所有的错误,因为我通过尝试做到了,但我仍然不知道我在做什么。
如果有人有更优雅的方式来获得这个结果,请回答我很多细节。

关于ffmpeg 将白色转换为 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65606419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com