如何根据蒙版图像查看/提取图像中的像素

时间:2018-01-22 17:48:15

标签: imagemagick

我试图实现此目的:使用遮罩图像查看/提取源图像中的像素。

enter image description here

简单的情况可能是使用"任何"掩码中的像素。但最好定义哪个颜色像素应该用于遮蔽("高级情况"在上图中)

我尝试convert source.png mask.png -compose Screen -composite source-filtered.png,但来自源的像素已被修改..

以下是实际文件的链接:

Source image

Mask image

Expected result

编辑:添加了实际文件的链接

4 个答案:

答案 0 :(得分:2)

也许-fx操作效果最好。

convert Source.png Mask.png -fx 'v == #E8212D ? u : v' output.png

output.png

convert Source.png Mask.png -fx 'v == #E8212D ? u : #E6E6E6' output.png

output.png

答案 1 :(得分:1)

鉴于您的新单独图像,这是在Imagemagick中执行所需操作的一种方法。

来源:

enter image description here

面膜:

enter image description here

将蒙版转换为二进制图像,白色,其他地方为红色和黑色。然后做一个comply multiply -composite来组合它们。

convert source.png \
\( mask.png -fuzz 1% -fill white -opaque red \
   -fill black +opaque white \) \
-compose multiply -composite \
result.png

enter image description here

答案 2 :(得分:1)

  

是否有实用的方法将此蒙版应用于许多图像?

是的,在Imagemagick中,您可以使用mogrify处理文件夹中的所有图像。我假设您对文件夹中的所有图像使用相同的蒙版图像,并且所有图像的大小都相同。

首先为要更改的所有图像创建一个目录(或使用您拥有的目录)。让我们说它在文件夹test1的桌面上。创建一个新的空目录。让我们在桌面上说文件夹test2。然后从桌面上的彩色蒙版创建二进制蒙版图像。你不能在要更改的png文件夹中有一个png掩码。如果你使面具成为gif,那么它可以在文件夹中,因为mogrify只会处理png,就像我在下面指定的那样。

convert mask.png -fuzz 1% -fill white -opaque red -fill black +opaque white newmask.png


enter image description here

然后使用mogrify处理test1中的所有文件,并将输出放在test2中。

cd
cd desktop/test1
mogrify -format png -path ../test2 -draw 'image multiply 0,0 0,0 "../newmask.png"' *.png


看到 https://www.imagemagick.org/Usage/basics/#mogrify https://www.imagemagick.org/Usage/basics/#mogrify_compose

答案 3 :(得分:0)

如果您单独提供图像会更好。我把它们裁剪掉了,但它们完全不匹配。不过,您可以看到它如何使用Imagemagick。

首先,这是从蒙版图像中生成仅灰色和白色的背景图像。将红色和蓝色方块都设置为与其他方块相同的灰色。

面具图片:

enter image description here

convert mask.png -fuzz 60% \
-fill "gray(230)" -opaque "rgb(237,28,36)" \
-fill "gray(230)" -opaque "rgb(0,102,179)" \
background.png

enter image description here

现在拍摄背景,源图像并处理蒙版,使红色变为白色,其他一切变为黑色。然后使用二进制掩码图像在背景上合成源。

convert background.png source.png \
\( mask.png -fuzz 1% -fill black +opaque "rgb(237,28,36)" \
    -fill white +opaque black \) \
-compose over -composite result.png

enter image description here