Python 如何使用PIL根据人脸检测裁剪选定区域?

Python 如何使用PIL根据人脸检测裁剪选定区域?,python,python-imaging-library,face-detection,Python,Python Imaging Library,Face Detection,嗨,我想使用python图像库为网站裁剪特定大小的图像。我有一个问题,这些图像是为了显示人们的脸,所以我需要根据它们自动裁剪 我知道人脸检测是一个困难的概念,所以我正在考虑使用face.com API,这对于我想做的事情来说是很好的 我只是有点纠结于如何使用这些数据根据大多数面裁剪选定区域 有人能帮忙吗 Joe如果要从图像中删除某个矩形,我可能会首先尝试以下内容: (可选)如果图像较大,则以面为中心进行粗略的方形裁剪,尺寸sqrt(2)大于较长的边(如果为矩形)。在最坏的情况下(45°旋转),它

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

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

我只是有点纠结于如何使用这些数据根据大多数面裁剪选定区域

有人能帮忙吗


Joe

如果要从图像中删除某个矩形,我可能会首先尝试以下内容:

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

  • 有一个python库,它有一个智能裁剪的概念,在其他选项中,可以使用人脸检测来进行更智能的裁剪。 它在引擎盖下使用opencv,但您与它隔离。

    如果你想要一个你能更好控制的API(无论好坏),请看看OpenCV。我不明白如何让它与Python一起工作,而且我也不希望在短时间内上传大量照片。有一些OpenCV的Python包装,还有一些关于使用它进行人脸检测的博客文章(例如)但是如果你有一个很好的解决方案,最好还是坚持下去。5秒钟看一眼,OpenCV似乎没有提供面部旋转(如果需要的话)。我不希望web服务器上有太多负载。无论如何,谢谢:)呃,请记住,当你的网站开始获得数百万点击率时,你不必付费使用其他人的API:p旋转角度似乎是由API直接提供的
    roll
    value,因此我们甚至可以在没有trig知识的情况下继续:)这很好。我不喜欢trig(我在学校做过,不知道它是怎么工作的!)。我来看看会发生什么:)@{Joe Simpson}哦,坏消息。。我收回。。横摇、俯仰和偏航似乎是3D旋转坐标:)因此横摇可能不完全是2D旋转角度API提供了所有三个旋转轴…
    横摇
    俯仰
    、和
    横摇
    ,因此
    横摇
    可能是3D属性,而不是与2D图像上的面直接相关。但在大多数情况下,它们应该非常接近,而且无论如何,它的值都不是精确的。@mykhal啊,我输入slow。。。我在想,如果脸通常指向相机(巨大的假设),
    偏航
    俯仰
    应该相当小。