如何使用PIL根据面部检测裁剪选择区域?

时间:2010-10-13 19:16:33

标签: python python-imaging-library face-detection

您好我想使用python图像库将图像裁剪为特定大小的网站。我有一个问题,这些图像是为了显示人们的脸,所以我需要根据它们自动裁剪。

我知道人脸检测是一个很难的概念所以我正在考虑使用face.com API http://developers.face.com/tools/#faces/detect,这对我想做的事情很好。

我只是觉得如何使用这些数据根据大部分面部裁剪选区。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

有一个用于python的库,它具有智能裁剪的概念,除了其他选项之外,还可以使用面部检测来进行更智能的裁剪。 它在引擎盖下使用opencv,但你与它隔离。 https://github.com/globocom/thumbor

答案 1 :(得分:2)

如果您想从图像中删除某个矩形,请按以下步骤进行操作:

  1. (可选)如果图像较大,请在面上居中的粗糙方形裁剪,尺寸sqrt(2)大于长边(如果是矩形)。最坏的情况(45°旋转),它仍然会抓住所有重要的东西。
  2. 根据面部方向旋转(类似rough_crop.rotate(math.degrees(math.atan(ydiff/xdiff)),三角形很有趣)
  3. 做最后的作物。如果您进行了初始裁剪,则面应居中,否则您必须将所有旧坐标转换(旋转)到新图像(更多触发!)。