给定一张图片,如何才能把其中的重要部分选取出来?这是个很普遍的需求,但是实现这一需求的算法并不多。在进行少许检索之后,发现已有的几个,几乎都是一个老祖宗。
最早的实现是用 JavaScript 写就的(这也难怪,毕竟在 Web 上这个需求的强烈性恐怕远超其他平台)smartcrop.js
,代码库是 https://github.com/jwagner/smartcrop.js
。相关文章可参见 https://29a.ch/2014/04/03/smartcrop-content-aware-image-cropping。
随后有人将之用 Java 实现了一遍,是为 https://github.com/QuadFlask/smartcrop-java
,Java 版本的实现,依赖于 BufferedImage,但在同为 Java 语言称霸一方的 Android 平台上,该类却不见其踪影,于是作者又写了一份 https://github.com/QuadFlask/smartcrop-android
。后来,还有好事者用 go 语言也实现了一遍,即 https://github.com/muesli/smartcrop
。
另外还有一个国人写的库,在 https://github.com/pqpo/SmartCropper
,看上去似乎对文档等物体的识别更擅长一些。