我正在尝试将彩色图像从.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。 >
答案 0 :(得分:2)
我用自己的原始输入图像对其进行了测试,并且工作正常。
您可能使用了错误的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
。
要使用raw
将jpeg
文件转换为FFmpeg
,可以使用以下命令:
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字节。
只需确保问题不存在于您的输入文件中...
您可以使用raw
创建合成输入FFmpeg
图像,并将结果转换为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
我找到了解决方法:
显然原始图像格式是“平面” 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(绿色平面在前)。
我使用extractplanes
和mergeplanes
重新排列颜色通道。
ImageMagick
有一个更简单的解决方案:
magick.exe -depth 8 -interlace plane -size 768x576 rgb:image.raw image.jpeg
示例:
由于stackoverflow
不允许上传raw
个文件,因此我以png
格式上传了一个grayscale
图像,该图像模拟了“平面” RGB:
要测试该解决方案,请执行以下步骤:
D5IUp.png
)。 png
到raw
转换为“平面” RGB”(扩展名.y
):ffmpeg -y -i D5IUp.png -c:v rawvideo -pix_fmt gray D5IUp.y
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")