我有一个主要对象为松饼和深色背景的图像。 使用蒙版图像,我想获得 2 个不同的图像,1 个用于没有松饼的背景,另一个是没有背景的松饼。
我将在下面描述我创建的步骤以及我现在遇到的问题:
第一步:我发现我得到的蒙版图像沿松饼的边缘有一些灰色像素。 因此,我运行下面的命令来“清理”蒙版图像,以确保所有黑色都是黑色。
convert mask.png -fuzz 100% -fill black -opaque black maskresult.png
Step2:与Step1类似的命令,确保非黑全白
convert maskresult.png -fuzz 100% -fill white -opaque white -threshold 50% maskresult2.png
第三步:剪掉背景。我可以看到一些松饼的边缘。我猜问题出在掩模图像上。我们可以清理边缘或以某种方式“模糊”边缘以使其不那么明显吗?
composite -compose minus maskresult2.png test.jpg maskresult3.png
第四步:反转蒙版图像,将松饼切出来,白切黑,黑切白。
convert maskresult2.png -negate maskresult4.png
第五步:把松饼切出来
composite -compose minus maskresult4.png test.jpg maskresult5.png
Step6:将松饼背景转换为透明。这也会导致松饼内的黑色像素变成透明的问题。如果我们仔细放大松饼的边缘,我们会到处看到一些透明像素,而且松饼的边缘也不光滑。
convert maskresult5.png -fuzz 0% -transparent black maskresult6.png
我需要如何做的建议,
Step3和Step6将“黑色”变成透明而不影响背景和松饼?
Step3,清洁松饼边缘,使其不那么明显
非常感谢!
此命令使用一个 ImagMagick 命令生成两幅输出图像,一幅只有松饼在透明背景上,另一幅只有背景和松饼所在的透明孔。
magick convert muffin.jpg null: ^
( muffmask.png -blur 0x1 ) ( +clone -negate ) ^
-compose copyopacity -layers composite muffin-%02d.png
首先读取原始输入图像。然后在括号中,因此它不会影响输入图像,它会读取蒙版图像并将其模糊一点以柔化结果中的边缘。然后在括号中它再次克隆了那个模糊的蒙版,并用“-negate”交换了它的黑色和白色。
通过输入图像和两个版本的蒙版之间的 IM 特殊占位符图像“null:”,它使用操作“-layers composite”来创建两个单独的输出图像:松饼和背景。输出文件将命名为“muffin-01.png”和“muffin-02.png”。
该命令采用 Windows CLI 语法。对于 *nix 操作系统,您可能需要将续行插入符号“^”更改为反斜杠“\”,并使用反斜杠“\(...\)”转义括号。