Imagemagick 如何基于遮罩图像查看/提取图像中的像素
我试图做到这一点:通过使用遮罩图像查看/提取源图像中的像素Imagemagick 如何基于遮罩图像查看/提取图像中的像素,imagemagick,Imagemagick,我试图做到这一点:通过使用遮罩图像查看/提取源图像中的像素 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 简单的情况可能是在遮罩中使用“任意”像素。但最好定义哪种颜色的像素应该用于遮罩(上图中的“高级情况”)
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
简单的情况可能是在遮罩中使用“任意”像素。但最好定义哪种颜色的像素应该用于遮罩(上图中的“高级情况”)
我尝试了convert source.png mask.png-compose Screen-composite source filtered.png
,但修改了源中的像素
以下是指向实际文件的链接:
编辑:为实际文件添加链接也许该操作最有效
convert Source.png Mask.png -fx 'v == #E8212D ? u : v' output.png
或
也许手术效果最好
convert Source.png Mask.png -fx 'v == #E8212D ? u : v' output.png
或
如果您单独提供图像会更好。我把它们剪了下来,但它们不太相配。不过,您可以使用Imagemagick了解它的工作原理 首先,这是从你的蒙版图像中产生一个只有灰色和白色的背景图像。使红色和蓝色的方块与其他方块变成相同的灰色 遮罩图像: 现在,以背景、源图像为背景,处理遮罩,使红色变为白色,其他一切变为黑色。然后使用二值遮罩图像在背景上合成源
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
如果您单独提供图像会更好。我把它们剪了下来,但它们不太相配。不过,您可以使用Imagemagick了解它的工作原理 首先,这是从你的蒙版图像中产生一个只有灰色和白色的背景图像。使红色和蓝色的方块与其他方块变成相同的灰色 遮罩图像: 现在,以背景、源图像为背景,处理遮罩,使红色变为白色,其他一切变为黑色。然后使用二值遮罩图像在背景上合成源
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
对于新的独立图像,这是在Imagemagick中实现所需功能的一种方法 资料来源: 遮罩: 将遮罩转换为二值图像,其中白色为红色,其他地方为黑色。然后做一个合成-乘法-合成来组合它们
convert source.png \
\( mask.png -fuzz 1% -fill white -opaque red \
-fill black +opaque white \) \
-compose multiply -composite \
result.png
对于新的独立图像,这是在Imagemagick中实现所需功能的一种方法 资料来源: 遮罩: 将遮罩转换为二值图像,其中白色为红色,其他地方为黑色。然后做一个合成-乘法-合成来组合它们
convert source.png \
\( mask.png -fuzz 1% -fill white -opaque red \
-fill black +opaque white \) \
-compose multiply -composite \
result.png
有没有一种实用的方法可以将此遮罩应用于许多图像
是的,在Imagemagick中,您可以使用mogrify处理文件夹中的所有图像。我假设您对文件夹中的所有图像使用相同的遮罩图像,并且所有图像的大小都相同
首先为所有要更改的图像创建一个目录(或使用现有的目录)。假设它位于桌面上的test1文件夹中。创建一个新的空目录。假设在桌面上作为文件夹test2。然后从桌面上的彩色遮罩创建一个二进制遮罩图像。在要更改的png文件夹中不能有png掩码。如果你把面具做成gif,那么它可以放在文件夹里,因为mogrify只处理PNG,正如我在下面指定的那样
convert mask.png -fuzz 1% -fill white -opaque red -fill black +opaque white newmask.png
然后使用mogrify处理test1中的所有文件,并将输出放在test2中
cd
cd desktop/test1
mogrify -format png -path ../test2 -draw 'image multiply 0,0 0,0 "../newmask.png"' *.png
看见 有没有一种实用的方法可以将此遮罩应用于许多图像 是的,在Imagemagick中,您可以使用mogrify处理文件夹中的所有图像。我假设您对文件夹中的所有图像使用相同的遮罩图像,并且所有图像的大小都相同 首先为所有要更改的图像创建一个目录(或使用现有的目录)。假设它位于桌面上的test1文件夹中。创建一个新的空目录。假设在桌面上作为文件夹test2。然后从桌面上的彩色遮罩创建一个二进制遮罩图像。在要更改的png文件夹中不能有png掩码。如果你把面具做成gif,那么它可以放在文件夹里,因为mogrify只处理PNG,正如我在下面指定的那样
convert mask.png -fuzz 1% -fill white -opaque red -fill black +opaque white newmask.png
然后使用mogrify处理test1中的所有文件,并将输出放在test2中
cd
cd desktop/test1
mogrify -format png -path ../test2 -draw 'image multiply 0,0 0,0 "../newmask.png"' *.png
看见
请分别发布图片供我们测试。很难剪下每个源图像和掩码图像的完全相同的区域。请发布单独的图像供我们测试。很难剪切出每个源图像和掩码图像的完全相同的区域。非常抱歉:(我添加了指向实际文件的链接。)原始图像是为了说明问题,以便我可以解释问题..很抱歉让您经历裁剪过程..非常抱歉:(我添加了指向实际文件的链接..原始图像是为了演示,以便我可以解释问题..很抱歉让您经历裁剪过程..哇!谢谢您的回答。它看起来很复杂,但只要有效,没关系..我将尝试代码并尽快给出反馈..这可能是一个不同的问题,但是,有没有一种实用的方法可以将此掩码应用于许多图像?我可以在shell中编写一个循环,但我想知道是否有Imagemagick方法可以将一个掩码应用于许多图像?哇!谢谢你的回答。它看起来很复杂,但只要它能工作,没关系。我会尝试代码并尽快给出反馈。这可能是一个不同的问题,但是,有没有一种实用的方法可以将此掩码应用于多个图像?我可以在shell中编写一个循环,但我想知道是否有Imagemagick方法可以将一个掩码应用于多个图像?感谢
-fx
操作符的指针。在我的例子中,以下操作非常完美:convert source.png mask.png-fx'v.r==1?u:0'output.png
interesti很遗憾,当我使用像素颜色时,它不起作用,就像你建议的那样;convert source.png mask.png-fx'v==#FF0000?u:0'output.png
谢谢你的指针