Image processing 如何将彩色图像从原始格式转换为JPEG格式

Image processing 如何将彩色图像从原始格式转换为JPEG格式,image-processing,image-formats,Image Processing,Image Formats,我正在尝试将彩色图像从.raw格式转换为.jpg或.png格式,我使用ImageMagick和以下命令提示代码: convert -size 768X576 -depth 8 rgb:my_image.raw my_image.jpeg 成功地将图像转换为jpeg格式是可行的,但存在以下问题: 1-生成的图像为灰色而非彩色。 2-结果图像细分为9个图像,作为重复的小图像网格 当我将rgb更改为灰色时,返回3个分离的灰色图像,这些图像在照明条件下从较暗到较亮有所不同。 我需要转换图像格式,请任何

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

convert -size 768X576 -depth 8 rgb:my_image.raw my_image.jpeg
成功地将图像转换为jpeg格式是可行的,但存在以下问题: 1-生成的图像为灰色而非彩色。 2-结果图像细分为9个图像,作为重复的小图像网格

当我将rgb更改为灰色时,返回3个分离的灰色图像,这些图像在照明条件下从较暗到较亮有所不同。
我需要转换图像格式,请任何人帮助我如何编辑代码或任何其他能够打开图像的软件,我尝试了很多软件,但它们很有用,我使用windows 10。

我用自己的原始输入图像测试了它,它工作正常

您可能使用了错误版本的ImageMagick。 我从下载了版本:ImageMagick-7.0.8-49-Q8-x64-static.exe

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

以下命令正在工作: magick.exe-大小768x576-深度8 rgb:my_image.raw my_image.jpeg

我更喜欢使用FFmpeg进行格式转换。 你可以从 选择: 版本:稳定当前版本为4.1.3。 体系结构:Windows 64位 链接:静态

解压缩zip文件,您只需要ffmpeg.exe。 要使用FFmpeg将原始文件转换为jpeg,可以使用以下命令:

ffmpeg-y-视频大小768x576-像素fmt rgb24-i我的图像.raw-像素fmt yuvj444p我的图像.jpeg

假设您的原始文件格式为块状RGB顺序:r、g、b、r、g、b、r、g、b…,请确保文件大小为768*576*3=1327104字节

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

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

创建合成输入: ffmpeg-y-f lavfi-i testsrc=duration=1:size=768x576:rate=1-pix\u fmt rgb24-f image2 test\u image.raw

转换合成输入: ffmpeg-y-视频大小768x576-像素fmt rgb24-i测试图像.raw-像素fmt yuvj444p测试图像.jpeg

结果测试_image.jpeg:

我找到了解决办法:

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

RRR RRR RRR GGGGG GGGGG GGGGG BBBBB BBBBB BBBBB

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

ffmpeg-y-视频大小768x576-pix\U fmt gbrp-i m-001-1.raw-过滤器复杂提取平面=g+b+r[g][b][r],[r][g][b]合并平面=0x001020:gbrp[v]-映射[v]m-001-1.jpeg

FFmpeg不支持原始平面RGB格式。 唯一接近RGB的平面是GBR,绿色平面是第一个。 我使用extractplanes和mergeplanes对颜色通道进行重新排序

ImageMagick有一个更简单的解决方案: magick.exe-深度8-隔行扫描平面-尺寸768x576 rgb:image.raw image.jpeg

例如: 由于stackoverflow不允许上传原始文件,我上传了一个模拟平面RGB的灰度格式png图像:

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

下载名为D5IUp.png的imgur。 将png转换为平面RGB.y扩展的原始格式: ffmpeg-y-i D5IUp.png-c:v rawvideo-pix_fmt gray D5IUp.y 从原始格式转换为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进行批量转换的示例:
对于%%f in*.raw do magick.exe-深度8-交错平面-大小768x576 rgb:%%f%%~nf.jpeg

请使用Google Drive、Dropbox或一些文件共享服务提供原始图像,以及您知道的有关其外观或详细信息的任何信息。谢谢。顺便说一下,这个命令不是magick,因为它是Windows与Linux/macOS的对比。该命令之所以是magick,是因为您使用的是v7,而不是转换它的v6。顺便说一句,如果在Windows上安装时勾选/选中“安装旧工具”选项,“转换”命令在v7上仍然有效。@Rotem非常感谢您提供的详细答案。convert和magick都给了我相同的结果,那就是灰色图像的网格,这不是网格的问题,我可以裁剪它,但我想返回一个彩色图像。@Rotem我现在也下载了ffmpeg,但它的命令行ffmpeg.exe无法打开,它是同时打开和关闭的,我现在不知道有什么问题。这是一个命令行工具。。。使用它的简单方法是将ffmpeg.exe与图像放在同一文件夹中。打开控制台窗口,并在命令行中执行它。您获得灰色图像网格的原因可能是由于错误的格式,该格式可能不是rgb24。你检查过文件大小了吗?你能以某种方式发布原始图像吗?