Imagemagick - 将给定图片中的对象居中

时间:2014-07-04 04:52:40

标签: php image-processing imagemagick

我有一个任务是编写一个PHP脚本,使对象位于图片的中心,例如

有些图片是水平方向的,有些是基于它的垂直方向,我需要裁剪白色空间的大小/在原始图片上添加空格。

我的第一种方法是检测图片中对象的边框,但有些图片没有明确的白色背景,例如:

此图片在边框上有额外的空白区域,背景为灰色渐变,因此难以检测到对象的边框,所以我尝试通过Imagemagick应用Sobel operator

exec("convert 1.jpg -define convolve:scale='50%!' -bias 50%  -morphology Convolve Sobel -solarize 50% -level 50,0%  ssc1.jpg");

结果还可以

现在我必须在过滤后的图像中找到边框,问题是

找到边框坐标的最佳方法是什么(输出应该是X1,X2,Y1,Y2)?

我已经阅读了一些类似的问题,例如this one将图像转换为文本并删除白色(我的情况下为黑色)像素,但我不确定什么是解决此问题的最佳方法(我是图像处理的新手)。

1 个答案:

答案 0 :(得分:0)

我今天没有时间在ImageMagick上做这件事,但是我在Photoshop中做了一个实验,它似乎工作得很好 - 至少对你的女士来说是渐变背景。

  1. 我拍摄了图像,并在Photoshop(Cmd + J)中复制了它的图层。
  2. 我将上层的混合模式设置为Hard Mix
  3. 我从屏幕顶部的菜单中进行了Image-> Trim。
  4. 有一个很好的解释,Hard Mix如何在页面底部here工作。

    您可以使用ImageMagick Hard Mix运算符模拟fx效果,例如here

    希望这种方法有所帮助。

    enter image description here