【问题标题】:Is there any way of creating an equal value area by color on ImageMagick?有没有办法在 ImageMagick 上按颜色创建等值区域?
【发布时间】:2021-11-09 06:03:37
【问题描述】:

假设我有以下图片:

我知道使用Global Mapper 我可以在具有特定颜色的区域周围创建多边形。在以下示例中,它在灰色区域周围创建了一个区域:

此功能称为Setup equal value area creation。我想用 ImageMagick 做类似的事情,有可能吗?我可以使用 ImageMagick 根据图像中的颜色绘制区域吗(或者获取多边形的坐标以便稍后在原始图像上绘制它们)?

【问题讨论】:

    标签: imagemagick


    【解决方案1】:

    您的图像很模糊,所有颜色都很难区分,这让我的眼睛很痛。我也不知道你真正感兴趣的是哪一部分,以及什么是糟糕的裁剪/选择。所以,我选择了我认为你可能会感兴趣的东西,并把它们的颜色分开,这样它们就可以相互区分,然后得到了:

    magick 0N9iv.png -alpha off -fuzz 10% -fill black -opaque "rgb(169,226,140)" -fill gray -opaque "rgb(212,208,204)" -fill white -opaque white \( +clone -colorspace gray -edge 1 -write edges.png \) -compose copyred   -composite result.png
    

    直到左括号的所有内容都只是分隔您的对象。括号内的部分形成白色轮廓并保存它们以检入名为edges.png 的文件。最后一部分只是对边缘进行着色并将它们添加回原始部分。

    如果您更清楚自己真正想要做什么以及图像的哪些方面对您很重要,我或其他人可能会做得更好。

    【讨论】:

    • 您的答案已经非常接近我想要做的。但我想把它放在同一个图像中。那么,不是在不同的图像上获得红线,而是获得多边形的坐标吗?只是这样我以后可以在原始图像上绘制它们?
    • 边缘已经存在于名为 edges.png 的文件中。是这个意思吗?
    • 不完全是......我的意思是它们的数值,在向量或类似的东西内。然后使用这些值,我可以在原始图像上显示边缘(执行最后一部分不是问题,只是获取它们的数值对我来说是问题)
    • 我不知道你说的“数值”是什么意思,抱歉。请问数值是什么?
    • 我不敢相信白点坐标列表是做任何事情的最佳方式,但如果这是你想要的,你可以像这样得到它们magick edges.png txt: | grep "#FFFFFF"你会得到X,Y: (255) #FFFFFF gray(255) 其中 X,Y 是白点的坐标。
    【解决方案2】:

    我不确定您想要什么,但可能是 ImageMagick 中的以下内容。假设您测量灰色大矩形中某个位置 (150,60) 的颜色,并想绘制另一个具有相同颜色的矩形。使用 ImageMagick 7,

    输入:

    magick img.png -set option:color "%[pixel:u.p{150,60}]" -fill "%[color]" -draw "rectangle 40,30 80,50" img_rect.png
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 2019-03-23
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      相关资源
      最近更新 更多