如何基于图像中的边界框裁剪图像(以编程方式)?

时间:2014-02-28 19:55:06

标签: php image image-processing imagemagick gd

我正在构建一个Web应用程序,它需要能够根据图像中包含的带有白色边框(并且没有填充)的4边形状的位置裁剪图像。用户上传的所有图像都将变暗,因此不应干扰算法以查找边界框。应用程序的这一部分应该能够处理所有类型的四边形,并将拉伸白边形状中包含的任何内容以适合正方形。

我在Photoshop中的懒惰演绎:http://i.stack.imgur.com/xJjoL.png

我正在使用Laravel构建此应用程序(LAMP堆栈)。我正在寻找像ImageMagick和GD这样的库,但我仍然是以编程方式编辑图像的新手。我可以调用IM或GD中的特定功能来帮助我构建应用程序的这一部分吗?是否有更好的PHP库能够执行此操作?我不是必须要求代码;在构建之前,我只想知道应该从哪些工具开始。

2 个答案:

答案 0 :(得分:1)

如果我理解你的要求,Imagemagick可以用于这种类型的应用程序。要更改图像的透视图,请查看:

http://www.imagemagick.org/Usage/distorts/#perspective

要在扭曲后裁剪图像,请查看:

http://www.imagemagick.org/Usage/crop/#crop

制作一个bash循环来完成这两项任务会很容易。像这样:

 ## first distort the images

 for i in *.jpg ##or whatever format you have (.tiff, pdf, etc..) 
 do 
 convert $i -distort Perspective out_file.png ## where you give coordinates into the perspective method
 done

 ## now to crop the distorted images
 for i in *.png 
 do
 convert $i -crop out_file.jpg ## where you give the coordinates of the new rectangle to the crop method
 done

上面的代码只是一个起点,需要根据我上面提到的链接进行填充。快乐的脚本!

答案 1 :(得分:0)

您可能需要查看OpenCV以识别rectagle。 GD和图像魔法擅长使用滤镜编辑图像,但它们不会做很多(或任何?)对象检测。

请参阅:https://github.com/ProGM/OpenCV-for-PHP/wiki/Installation-guide