At Facebook, we are using a similar technique to crop images. The part that is different is that instead of using the center of all the faces, we find the viewport that maximizes the number of faces to be displayed. <a href="http://blog.vjeux.com/2012/image/best-cropping-position.html" rel="nofollow">http://blog.vjeux.com/2012/image/best-cropping-position.html</a>
Thumbor (<a href="https://github.com/globocom/thumbor" rel="nofollow">https://github.com/globocom/thumbor</a>) is a great Python library for helping cropping which uses openCV for facial detection (as well as other algorithms for finding "interesting" parts of photos)
I implemented something like this with OpenCV late last year using a node.js wrapper. We were looking to do something similar for image cropping. What I found was that OCV was kind of unreliable. A major percent of the time, it would mark knees as faces or even wrinkles in pictures of women's handbags. It was a side project and we didn't pursue it, so I was unclear if there was a way to train it over time. If so, did you do this to improve your accuracy?<p>I also used PIL a few years back to do image generation from text. I kept running into memory fragmentation bugs, weird artifacts creeping into images, etc. I haven't been able to recommend PIL for any serious work since then. Has this gotten better?
I built something like this to automate cropping headshots for players in major sports. I figured it would work flawlessly after I ran a few test images through, but it turns out that it failed detecting a face or gave the wrong coordinates about 20% of the time.<p>I'm curious to know what the success rate of SeatGeek's process is.