【问题标题】:How can I use PIL to crop a select area based on face detection?如何使用 PIL 根据人脸检测裁剪选择区域?
【发布时间】:2011-04-25 00:57:31
【问题描述】:

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

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

我只是对如何使用这些数据根据大多数人脸裁剪选择区域有点困惑。

有人可以帮忙吗?

【问题讨论】:

  • 如果您想要一个您可以更好地控制的 API(无论好坏),请查看 OpenCV。 opencv.willowgarage.com/wiki/FaceDetection
  • 我不明白如何让它与 Python 一起工作,而且我不希望在短时间内上传大量照片。
  • 有用于 OpenCV 的 Python 包装器,以及一些关于将其用于人脸检测的博客文章(例如 creatingwithcode.com/howto/…),但如果您有一个运行良好的解决方案,最好坚持下去。乍一看,OpenCV 似乎没有让面部旋转(如果需要)。
  • 我不希望 Web 服务器上的负载过多。无论如何谢谢:)
  • 嗯,请记住您的网站何时开始获得数百万次点击,这样您就不必付费使用其他人的 API:P

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


【解决方案1】:

如果您想从图像中删除一些矩形,我可以先尝试以下方法:

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

【讨论】:

  • 旋转角度好像是由api直接提供的roll值,所以即使没有三角知识我们也可以去:)
  • 那很好。我不喜欢三角(我在学校做过,但不知道它是如何工作的!)。我会看看有什么作用:)
  • @{Joe Simpson} 哎呀,坏消息.. 我收回它.. 滚动、俯仰和偏航似乎是 3D 旋转坐标 :) 所以滚动可能不完全是 2D 旋转角度
  • API 提供所有三个旋转轴...yawpitchroll,所以roll 可能是 3-D 属性,而不是 direct 与二维图像上的人脸相关。但在大多数情况下,它们应该非常接近,而且值也不完全一样。
  • @mykhal 呃,我打字很慢...我在想,如果面部通常指向相机(巨大的假设),yawpitch 应该相当小。跨度>
【解决方案2】:

有一个 Python 库,它具有智能裁剪的概念,除其他选项外,还可以使用人脸检测进行更智能的裁剪。 它在后台使用 opencv,但您与它隔离。 https://github.com/globocom/thumbor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-25
    • 2014-05-30
    • 2016-01-01
    • 1970-01-01
    • 2011-11-14
    • 2014-04-28
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多