gpt4 book ai didi

python - 如何使用 python 将原始 Y 视频缓冲区转换为图像?

转载 作者:行者123 更新时间:2023-12-02 16:54:36 25 4
gpt4 key购买 nike

我有一个 Y 视频平面的原始文件 (y.raw)从原始视频帧格式 YUV (YUV422_SEMI_PLANAR) 中提取.如何转换 y.raw作为图像 png 或 jpg ?

最佳答案

您基本上得到了一个没有打包或交错的单 channel 灰度图像。所以你有几个选择:

  • 命令行中的 ImageMagick,
  • 通过 NetPBM PGM 格式和 Photoshop 或 GIMP
  • python


  • 终端命令行中的 ImageMagick

    如果您有 ImageMagick 像大多数 Linux 发行版一样安装(或者您可以在 Mac 和 Windows 上免费安装),您可以在终端中将其转换为这样。

    假设它是 640x480 像素和 8 位,并且您想要一个 PNG:
    convert -depth 8 -size 640x480 gray:y.raw result.png

    假设它是 1024x768 像素和 16 位,并且您想要对比度拉伸(stretch)的 JPG:
    convert -depth 16 -size 1024x768 gray:y.raw -auto-level result.jpg

    通过 NetPBM PGM 格式和 Photoshop 或 GIMP

    说你没有 ImageMagick , 你可以把文件变成 NetPBM PGM (可移植灰色 map ),您可以在 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

    enter image description here

    使用 ls 时看起来像这样:
    -rw-r--r--   1 mark  staff  307200 23 Mar 10:05 y.raw

    关于python - 如何使用 python 将原始 Y 视频缓冲区转换为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49443354/

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