【发布时间】:2016-03-23 15:32:53
【问题描述】:
我有 3 张图片:source.jpg、saturated.jpg 和 mask.jpg,我想混合 source.jpg 和饱和.jpg 使用 mask.jpg。
当我使用 ImageMagick 的 convert 命令时:
convert source.jpg saturated.jpg mask.jpg -compose over -composite result.jpg
我知道result。
但是当我对 Magick++ 做同样的事情时:
Magick::Image source,saturated,mask;
source.read("source.jpg");
saturated.read("saturated.jpg");
mask.read("mask.jpg");
source.clipMask(mask);
source.composite(saturated,0,0,OverCompositeOp);
我知道了result。
谁能告诉我我做错了什么?
【问题讨论】:
-
@emcconville 如果你能看看这个问题,请。
-
我很确定你需要在使用之前将
mask转换为灰度,并且可能会在source中添加一个遮罩(alpha 通道),并且可能会反转遮罩,所以至少下面的第一行,也许是第二行和第三行……mask.type( Magick::GrayscaleType );和source.matte(true);和mask.negate();。 -
@MarkSetchell Alpha 通道与它无关,因为源图像和饱和图像都是 jpeg,我只是在另一个上添加一个。不应否定遮罩,因为它会反转白色和黑色区域,并且此处的遮罩图像用作指导饱和图像中的哪些像素应该使用哪些不使用。
标签: c++ image-processing imagemagick blending magick++