目前正试图弄清楚如何使用边界框(来自detect-faces响应)制作面部裁剪,并使用这些裁剪使用SearchFacesByImage API搜索现有集合
SearchFacesByImage文档中提到了这一点。
您也可以调用DetectFaces操作并使用响应中的边界框来进行面部裁剪,然后您可以将其传递给SearchFacesByImage操作
我试图在Python或Node.js中使用Lambda函数执行此操作。输入图像是s3对象。
所有人都非常感谢。
答案 0 :(得分:1)
我遇到了完全相同的问题。请参阅AWS文档中的this link。在这里,您将找到python或java的示例代码。它将返回边界框的顶部,底部,宽度和高度。请记住,左上角将被视为(0,0)。
然后,如果您使用python,则可以使用cv2或PIL裁剪图像。
以下是PIL的示例:
from PIL import Image
img = Image.open( 'my_image.png' )
cropped = img.crop( ( Left, Top, Left + Width, Top + Height ) )
cropped.show()
在此代码的顶部,底部,宽度和高度是链接中给出的代码的响应。
答案 1 :(得分:0)
我用Java编写了这个脚本,也许是它的帮助
java.awt.image.BufferedImage image = ...
com.amazonaws.services.rekognition.model.BoundingBox target ...
int x = (int) Math.abs((image.getWidth() * target.getLeft()));
int y = (int) Math.abs((image.getHeight() *target.getTop()));;
int w = (int) Math.abs((image.getWidth() * target.getWidth()));
int h = (int) Math.abs((image.getHeight() * target.getHeight()));
int finalX = x + w;
int finalH = y + h;
if (finalX > image.getWidth())
w = image.getWidth()-x;
if (finalH > image.getHeight())
h = image.getHeight()-y;
System.out.println(finalX);
System.out.println(finalH);
//
//
BufferedImage subImage = image.getSubimage(
x,
y,
w,
h);
//
//
String base64 = ImageUtils.imgToBase64String(subImage, "jpg");