【问题标题】:How to convert colored image from RAW to JPEG format如何将彩色图像从 RAW 格式转换为 JPEG 格式
【发布时间】:2019-10-28 11:16:37
【问题描述】:

我正在尝试将彩色图像从 .raw 格式转换为 .jpg 或 .png 格式,我使用 ImageMagick 和以下命令提示符代码:

convert -size 768X576 -depth 8 rgb:my_image.raw my_image.jpeg

将图片转换成jpeg格式是成功的,但是有一些问题是: 1- 结果图像是灰色的,没有彩色。 2- 将生成的图像细分为 9 个图像,作为重复的小图像网格。

当我将rgb 更改为gray 时,返回给我 3 个不同的灰度图像,从暗到亮的光照条件不同。 我需要转换图像格式,任何人都可以帮助我如何编辑代码或任何其他能够打开图像的软件,我尝试了非常软件但它们很有用,我使用的是 windows 10。

【问题讨论】:

  • 请提供原始图像 - 使用 Google Drive、Dropbox 或一些文件共享服务,以及您所知道的关于其外观或详细信息的任何信息。谢谢。

标签: image-processing image-formats


【解决方案1】:

我用自己的原始输入图像对其进行了测试,它运行良好。

您可能使用了错误版本的 ImageMagick。
我从https://imagemagick.org/script/download.php 下载了版本:ImageMagick-7.0.8-49-Q8-x64-static.exe

在我下载的版本中,转换命令是magick.exe而不是convert

以下命令正在运行:
magick.exe -size 768x576 -depth 8 rgb:my_image.raw my_image.jpeg

我更喜欢使用FFmpeg 进行格式转换。
您可以从https://ffmpeg.zeranoe.com/builds/下载它
选择:
版本:稳定(当前版本为 4.1.3)。
架构:Windows 64 位
链接:静态。

解压zip文件,你只需要ffmpeg.exe
要使用FFmpegraw 文件转换为jpeg,您可以使用以下命令:

ffmpeg -y -video_size 768x576 -pix_fmt rgb24 -i my_image.raw -pix_fmt yuvj444p my_image.jpeg

假设您的原始文件格式是“大块”RGB(顺序:r,g,b,r,g,b,r,g,b...),请确保文件大小为 768*576*3 = 1,327,104 字节.


只是为了确保问题不在您的输入文件中......

您可以使用FFmpeg 创建合成输入raw 图像并将结果转换为jpeg

创建合成输入:
ffmpeg -y -f lavfi -i testsrc=duration=1:size=768x576:rate=1 -pix_fmt rgb24 -f image2 test_image.raw

转换合成输入:
ffmpeg -y -video_size 768x576 -pix_fmt rgb24 -i test_image.raw -pix_fmt yuvj444p test_image.jpeg

结果(test_image.jpeg):


我找到了解决办法:

显然原始图像格式是“平面”RGB:

RRRRR
RRRRR
RRRRR
GGGGG
GGGGG
GGGGG
BBBBB
BBBBB
BBBBB

将其转换为 jpeg(使用FFmpeg)是一个复杂的问题:

ffmpeg -y -video_size 768x576 -pix_fmt gbrp -i m-001-1.raw -filter_complex "extractplanes=g+b+r[g][b][r],[r][g][b]mergeplanes=0x001020:gbrp[v]" -map "[v]" m-001-1.jpeg

FFmpeg 不支持原始“平面”RGB 格式。
唯一接近 RGB 的“平面”是 GBR(首先是绿色平面)。
我使用extractplanesmergeplanes 重新排序颜色通道。

ImageMagick 有一个更简单的解决方案:
magick.exe -depth 8 -interlace plane -size 768x576 rgb:image.raw image.jpeg


示例:
由于stackoverflow不允许上传raw文件,我上传了png格式的grayscale模拟“平面”RGB的图像:

要测试解决方案,请使用以下步骤:

  1. 下载image(imgur 命名为:D5IUp.png)。
  2. png 转换为raw 为“平面”RGB(.y 扩展):
    ffmpeg -y -i D5IUp.png -c:v rawvideo -pix_fmt gray D5IUp.y
  3. raw 转换为jpeg:
    ffmpeg -y -video_size 128x96 -pix_fmt gbrp -i D5IUp.y -filter_complex "extractplanes=g+b+r[g][b][r],[r][g][b]mergeplanes=0x001020:gbrp[v]" -map "[v]" D5IUp.jpeg

结果:


使用ImageMagick进行批量转换的示例:
for %%f in (*.raw) do (magick.exe -depth 8 -interlace plane -size 768x576 rgb:"%%f" "%%~nf.jpeg")

【讨论】:

  • 顺便说一下,命令不是magick,因为它是 Windows 与 Linux/macOS。该命令是magick,因为您使用的是v7 而不是convert 的v6。顺便说一句,如果在 Windows 上安装时勾选/选中安装“旧版工具”的选项,convert 命令仍然适用于 v7。
  • @Rotem 非常感谢您的详细回答。 convert 和 magick 都给我相同的结果,即灰色图像网格,这不是网格问题,我可以裁剪它,但我想返回彩色图像。
  • @Rotem 我现在也下载了ffmpeg,但是它的命令行(FFmpeg.exe)打不开,同时打开和关闭,是什么问题我现在没有.
  • 它是一个命令行工具...使用它的简单方法是将 ffmpeg.exe 与您的图像放在同一文件夹中。打开一个控制台窗口,并在命令行中执行它。
  • 您得到“灰色图像网格”的原因可能是格式错误(格式可能不是 rgb24)。你检查文件大小了吗?你能以某种方式发布原始图像吗?
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 2020-11-18
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多