2010-10-13 28 views
2

嗨我想使用python圖像庫來裁剪圖像到網站的特定大小。我有一個問題,這些圖像是爲了顯示人臉,所以我需要根據它們自動裁剪。如何使用PIL根據人臉檢測裁剪選定區域?

我知道人臉檢測是一個困難的概念,所以我正在考慮使用face.com API http://developers.face.com/tools/#faces/detect,這對我想做的事情來說很好。

我只是有點卡在如何使用這些數據來裁剪基於大多數人臉的選定區域。

任何人都可以幫忙嗎?

+1

如果你想要一個你有更多控制權的API(好或壞),看看OpenCV。 http://opencv.willowgarage.com/wiki/FaceDetection – 2010-10-13 19:24:04

+0

我不明白我如何才能使用Python,除此之外,我不期望在短時間內上傳大量照片。 – 2010-10-13 19:25:37

+0

有OpenCV的Python包裝,以及一些關於使用它進行人臉檢測的博客文章(例如http://creatingwithcode.com/howto/face-detection-in-static-images-with-python/),但如果您有一個可以正常工作的解決方案,更好地堅持下去。在5秒鐘的時間內,OpenCV似乎沒有給出臉部旋轉(如果需要的話)。 – 2010-10-13 19:40:42

回答

4

有一個python庫,它具有智能裁剪的概念,在其他選項中,可以使用人臉檢測進行更智能的裁剪。 它在引擎蓋下使用opencv,但是你是與它隔離的。 https://github.com/globocom/thumbor

+0

這很酷! :d – 2012-05-23 18:25:22

2

如果您有想要從圖像切除一些矩形,這裏就是我可能會嘗試先:

  1. (可選)如果圖像很大,做一個粗略的方形作物以尺寸爲sqrt(2)的臉部爲中心,大於長邊(如果是長方形)。最壞的情況下(45°旋轉),它仍會抓住一切重要的東西。
  2. 基於臉部方向旋轉(類似於rough_crop.rotate(math.degrees(math.atan(ydiff/xdiff)),trig很有趣)
  3. 做最後的裁剪。如果你做了初始裁剪,臉部應該居中,否則你必須將所有舊座標轉換(旋轉)到新圖像(更多觸發!)。
+0

旋轉的角度似乎是直接由api提供爲'roll'值,所以我們甚至可以在沒有觸發知識的情況下進行:) – mykhal 2010-10-13 19:39:16

+0

這很好。我不喜歡trig(我在學校做過,不知道它是如何工作的!)。 我會看看那是什麼:) – 2010-10-13 19:43:19

+0

@ {喬·辛普森}哎呀,壞消息..我把它收回..輥,俯仰和偏航似乎是3D旋轉coords :)所以卷可能不完全是2D旋轉角度 – mykhal 2010-10-13 19:46:55