mat*_*ias 3 algorithm geometry crop imagemagick face-detection
我正在努力寻找正确的方法来调整大小、裁剪和图像,并有一个重点区域。在我的情况下,焦点区域是图像中检测到的人脸,我需要确保该区域在裁剪后的版本中可见。
我有例如给出的焦点区域。face_height、face_width、face_center_x 和 face_center_y。这些值是原始图像尺寸的百分比。
我想做的是得到一个例如。60x60 缩略图。正常的方法是调整大小,使图像的高度或宽度等于 60px,然后从中心裁剪 60x60,如下所示:
mogrify -resize 60x -gravity 'Center' -crop 60x60 image.jpg
Run Code Online (Sandbox Code Playgroud)
可以采取什么方法将我的作物集中在给定区域周围?
我正在考虑一个包含多个路径的解决方案:
有没有更聪明的方法?您可以尝试制作一些示例代码吗?
谢谢!
我首先在脚本或程序中进行算术运算,然后将精确坐标提供给 ImageMagick。
算术步骤:
face_height
,face_width
,face_center_x
和face_center_y
像素值。您需要矩形缩略图,因此选择最长的一边并使用它进行操作:
longest_side = max(face_height, face_width)
现在您可以计算作物的左上角:
crop_x = face_center_x -longest_side /
2crop_y = face_center_y -longest_side / 2
如果四个裁剪角中的任何一个超出您的图片尺寸,请对此进行调整:
crop_x
并且crop_y
都应该 >= 0crop_x + longest_side
应该小于图像宽度crop_y + longest_side
应该小于图像高度计算完这些后,ImageMagick 调用变得非常简单:
mogrify -crop {longest_side}x{longest_side}+{crop_x}+{crop_y} -resize 60x60 image.jpg
Run Code Online (Sandbox Code Playgroud)