我有原始视频帧格式YUV (y.raw)
提取的Y视频平面(YUV422_SEMI_PLANAR)
的原始文件。如何将此y.raw
转换为图像png或jpg?
答案 0 :(得分:3)
你基本上有一个没有打包或交错的单通道灰度图像。所以你有几个选择:
终端
中命令行的ImageMagick如果您安装了 ImageMagick ,就像大多数Linux发行版一样(或者您可以在Mac和Windows上免费安装),您可以在终端中将其转换为这样。
假设它是640x480像素和8位,你想要一个PNG:
convert -depth 8 -size 640x480 gray:y.raw result.png
假设它是1024x768像素和16位,你想要一个对比度拉伸的JPG:
convert -depth 16 -size 1024x768 gray:y.raw -auto-level result.jpg
通过NetPBM PGM格式和Photoshop或GIMP
假设您没有 ImageMagick ,您可以将该文件转换为NetPBM PGM
(便携式灰色地图)您可以在GIMP
,Paint
,feh
, Adobe Photoshop 中查看/修改/保存:
{ printf "P5\n640 480\n255\n"; cat y.raw; } > result.pgm
如果你不幸在Windows上并希望这样做,我认为它看起来像这样:
echo "P5" > header.txt
echo "640 480" >> header.txt
echo "255" >> header.txt
copy /b header.txt+y.raw result.ppm
<强>的Python 强>
如果你真的,真的想写一堆Python,它可能看起来像这样:
#!/usr/local/bin/python3
from PIL import Image
file=open("y.raw",'rb')
rawdata=file.read()
file.close()
imgsize = (640,480)
# Use the PIL raw decoder
img = Image.frombytes('L',imgsize,rawdata)
img.save('result.png')
如果其他人正在阅读此内容并希望他们有一个Y数据框架可供使用,您可以轻松地创建一个模拟的包含带有ImageMagick的黑白渐变,如下所示:
convert -size 640x480 gradient: -depth 8 gray:y.raw
ls
:
-rw-r--r-- 1 mark staff 307200 23 Mar 10:05 y.raw