当前位置: 首页 > 知识库问答 >
问题:

替换矩形区域中的颜色

柯捷
2023-03-14

如何用image Magick替换图像矩形区域内的颜色?

下面是输入和输出图像的示例,我使用Adobe Photoshop生成这些图像,方法是选择一个矩形区域(包含网格区域),并执行命令:image->adjustments->replaceColor并选择要替换为灰色的黑色。

注意,绿色跟踪可以具有任何形状和颜色(黑色除外),绿色像素覆盖了黑色像素,因此floodfill是不可能的。

我知道如何替换整个图像中的颜色,像这样:

magick.exe convert in.png -f fuzz 0% -fill "rgb(64,64,64)" -opaque "rgb(0,0,0)" out.png

但是上面用灰色替换了所有的黑色,甚至是黑色文本,比如“ch1 Start 9 kHz”和那个文本可以是任何东西(它是可变的)。我希望网格区域上方和下方的文本保持黑色。

共有1个答案

于高雅
2023-03-14

这是相当简单的,如果您的输入图像都是相同的尺寸和您的裁剪区域总是相同的。使用ImageMagick,您可以在括号内对输入图像进行克隆,以特定的方式处理该克隆,然后将修改后的克隆合成到原始输入上。像这样的命令应该会让你很接近...

magick input.png ^
    ( +clone -crop 0x808+0+98 -fuzz 20% -fill "rgb(128,128,128)" ^
    -opaque "rgb(0,0,0)" -geometry +0+98 ) -composite result.png

从读取输入图像开始。然后在圆括号内生成克隆,裁剪要修改的部分,用灰色替换该部分中的所有黑色,并设置几何图形,使克隆可以在其原始位置上合成。之后,在圆括号之外,它合成了克隆回输入图像并写入输出。

由于您使用的是ImageMagickV7,除非您需要IMv6行为,否则您应该只使用“magick”而不是“magick convert”。

该命令在Windows语法中使用IMV7。对于*nix,您必须将连行插入符号“^”更改为反斜杠“\”,并转义括号“(...)”带反斜杠的“\(...\)”。

编辑以添加:

您可以在类似这样的命令中使用“-region”来完成同样的任务...

magick input.png -region %[w]x808+0+98 -fuzz 20% ^
   -fill "rgb(128,128,128)" -opaque "rgb(0,0,0)" +reghtml" target="_blank">ion result.png
 类似资料:
  • 本文向大家介绍openCV提取图像中的矩形区域,包括了openCV提取图像中的矩形区域的使用技巧和注意事项,需要的朋友参考一下 改编自详解利用OpenCV提取图像中的矩形区域(PPT屏幕等) 原文是c++版,我改成了python版,供大家参考学习。 主要思想:边缘检测—》轮廓检测—》找出最大的面积的轮廓—》找出顶点—》投影变换 运行效果 用到的图片 以上就是本文的全部内容,希望对大家的学习有所帮助

  • 问题内容: 我一直在使用skimage的SLIC实现来分割超像素中的图像。我想使用GLCM从这些超像素中提取其他功能,以解决分类问题。这些超像素不是矩形的。在MATLAB中,您可以将像素设置为NaN,算法将忽略它们(link)。我可以使用它在超像素周围制作边框,然后将未使用的像素设置为NaN。 skimage中的greycomatrix函数与MATLAB实现并不完全相同。将像素设置为NaN时,该函

  • 我有一个点[xmin,ymin,xmax,ymax]的列表,每个点都按黑点显示 请注意,有许多这样的矩形,如图像所示。红色的应检测删除,绿色的应保留。 输入是 n 矩形 输出是覆盖区域和它覆盖的矩形 id 。最好给出一些算法和解释。

  • 请帮助我如何找到两个矩形区域之间的交点。 例如:我在virtual earth MapsV6.3中搜索可视区域的结果 地图返回给我左上和右下的点作为纬度和经度。然后我平移区域移动到不同的位置。我有我的旧坐标保存现在我想找到共同的区域之间的旧的可视区域和新的可视区域。我已经有左上和右下的点了。

  • 我在我的javafx应用程序中使用锚板。我想画一个矩形并用渐变色填充它,如下所示:矩形的左侧是蓝色的,右侧是红色的,我希望它看起来从左到右,蓝色减少,红色增加。 我知道如何放置一个矩形(如何在javafx中使用Rectangle类),但我不知道如何以这种方式填充它。有什么想法吗?