ImageMagick:以BGR顺序写入像素

Mat*_*ois 4 imagemagick

我想将(大量)JPEG图像转换为Sun Raster格式(例如参见此处),因为我的程序只能使用这种格式.

问题是我的程序只允许使用Old或Standard类型的图像,即以BGR顺序写入像素.(我应该改变,但没有时间).默认情况下,ImageMagick以RGB格式生成文件.

我找到了交换颜色平面的技巧,但由于文件的样式是RGB格式,我得到了奇特的颜色.

这可能是传递给ImageMagick的一个简单选项,但我没有找到它.你有好主意吗?

小智 6

交换颜色的另一种方法是使用该-color-matrix选项.例如,要将RGB转换为BGR:

convert input.png -color-matrix '0 0 1
                                 0 1 0
                                 1 0 0' output.png
Run Code Online (Sandbox Code Playgroud)

参考:http://www.imagemagick.org/Usage/color_mods/


fmw*_*w42 6

在 Imagemagick 6 中,您可以使用 -swap 命令轻松完成此操作。让我们交换徽标图像中的红色和蓝色通道。

在此输入图像描述

convert logo.png -separate +channel \
-swap 0,2 -combine -colorspace sRGB logo_bgr.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

对于非常旧的 Imagemagick 版本,请使用 RGB 而不是 sRGB。

在 Imagemagick 7 中,使用 magick 而不是转换。


mor*_*pus 3

我有一个想法如何交换 RGB 图像中的红色和蓝色:

convert ( image_RGB.bmp -channel B -separate ) \
    ( image_RGB.bmp -channel G -separate ) \
    ( image_RGB.bmp -channel R -separate ) -channel RGB -combine image_BGR.bmp
Run Code Online (Sandbox Code Playgroud)

您只需从原始图像中剪切通道并以相反的顺序写入它们即可。