【问题标题】:ImageMagic detect if the image has border or frameImageMagick 检测图像是否有边框或框架
【发布时间】:2021-04-14 08:57:27
【问题描述】:

基本上,我的图像周围有一个粗黄色边框,类似于 NetGeo 图像。我想检查是否有边框(NetGeo只是一个例子,边框颜色可以是任何宽度和任何颜色),我想检测它并在它存在时将其刮掉。 p>

我看到这个问题在Trim whitespace using PIL PIL 中得到了回答,但我正在使用单个命令或 java 在 imagemagick 中寻找相同的解决方案

但如果没有实心边框,我不想裁剪图像。

例如

我不想删除黄色,因为它不是实线边框。希望它有助于理解这个问题。

【问题讨论】:

    标签: java image-processing imagemagick


    【解决方案1】:

    此代码似乎在 ImageMagick 中工作

    convert NG.png -fuzz 20% -background "rgb(239,204,60)" -define trim:percent-background=0% -trim +repage x.png
    

    【讨论】:

    • 感谢您的回答。我真的很感激,如果我知道颜色,这很好用,如果我不知道边框的颜色怎么办?我的主要任务是知道图像是否有边框,或者只有在图像有顺序时才修剪。如果图像没有,则会失败。
    • 只需测量图像左上角的颜色为convert logo: -format "%[pixel:p{0,0}]" info:
    • 感谢@fmw42 上面的命令帮助我找到颜色并将其从图像中删除,但如果没有实心边框,它也会裁剪。如果只有像 NP 那样的边框,我只想裁剪。让我更新问题以提供帮助
    • 首先在输入的每一边裁剪你想要多少像素宽(即使只有 1 或 2 像素)。然后 - 将顶部和底部以及左右旋转 90 度的图像附加到一张图像中。然后将 3 个通道中的每一个附加到一个灰度通道中并获得平均值(-format "%[fx: mean>0?0:1]" info:)。因此,如果结果为 0,则它有一个边框。我的结果是 1,它没有边框。或者您可以将边界测试的阈值设置为 -format "%[fx: mean>threshold?0:1]" info:v
    • 再次感谢您的回复,我对imagemagic不太熟悉,但会尝试一下
    猜你喜欢
    • 2015-07-30
    • 2016-10-03
    • 2013-02-02
    • 1970-01-01
    • 2014-04-02
    • 2011-02-04
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多