我有一个简短的视频剪辑,其背景是完全黑色的。在短时间内,它将以全白字幕过渡。中间的帧显示各种灰色调。
在另一个SO问题中,我找到了一种单线可让我找到最亮的像素:
convert 0000$a.png -colorspace HSB -format %c histogram:info:- | sort -t',' -gr -k 3 | head -1 | sed 's/.* hsb.*,.*,\([0-9.]*\)%.*/\1/
在我的视频帧范围内,我得到了一条从0到100的对数曲线。我认为可以将这些数字取下来,将它们放入svg对文本元素的不透明度中,并输出png。
但是,结果与我要模仿的原始结果有很大不同。影格50的亮度为8.49447%。看起来如下:
这在我眼中看起来是黑色的(第49帧的值为0%)。
如果将白色文本设置为8.49%的不透明度,则会得到以下结果:
这仍然很暗,但是更容易察觉。
很明显,像素亮度类似于黑色背景上白色的不透明度。数字本身是种,因为我的曲线以正确的速率逐渐消失,但是它开始变得更亮,并逐帧保持更亮,直到它们都达到100%。 >
我可以将该值转换为匹配的不透明度吗?我是否需要一个完全不同的值?如果这只是几帧,我只是盯着它们看,但是我有几千个看起来正确(针对各种场景)。
我正在使用的命令行如下:
for a in `seq -f %06g 50 72`; do o=`convert $a.png -colorspace HSB -format %c histogram:info:- | sort -t',' -gr -k 3 | head -1 | sed 's/.* hsb.*,.*,\([0-9.]*\)%.*/\1/'`; p=0`echo "scale=6;$o/100"|bc -l`; sed "s|ABC|$p|" ../svg/scene000.svg > ../temp.svg; /Applications/Inkscape.app/Contents/Resources/bin/inkscape -f /Users/user/ep1/temp.svg -e /Users/user/ep1/4k/$a.png -z > /dev/null; echo -e "$a.png\t$o\t\t$p"; done
我正在查看框架的这些值:
000050.png 8.49447 0.084944
000051.png 11.0702 0.110702
000052.png 16.6186 0.166186
000053.png 27.7847 0.277847
000054.png 32.5076 0.325076
000055.png 40.0663 0.400663
000056.png 46.6477 0.466477
000057.png 52.6319 0.526319
000058.png 62.2218 0.622218
000059.png 64.1088 0.641088
000060.png 71.5642 0.715642
000061.png 76.4314 0.764314
000062.png 81.3782 0.813782
000063.png 81.3782 0.813782
000064.png 85.1114 0.851114
000065.png 85.1114 0.851114
000066.png 88.8427 0.888427
000067.png 91.8013 0.918013
000068.png 93.7057 0.937057
000069.png 94.4534 0.944534
000070.png 97.7247 0.977247
000071.png 97.7247 0.977247
000072.png 99.8274 0.998274