如果我的问题措辞不正确,我很抱歉,我不经常在这里发帖。
我在使用Android应用程序上的Amazon Web Services启动我的请求以匹配2个不同图像中的2个面孔时遇到困难。我的代码如下:
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(), // Context
"xxxxxxx", // Identity Pool ID
Regions.US_EAST_1 // Region
);
AmazonRekognitionClient client = new AmazonRekognitionClient(credentialsProvider);
ByteBuffer buffer = ByteBuffer.allocate(croppedBitmap.getByteCount()); //Create a new buffer
croppedBitmap.copyPixelsToBuffer(buffer); //Move the byte data to the buffer
try {
//get first image from phone
File dhruv = new File("/sdcard/temp/dhruv.jpg");
InputStream inputStream = new
FileInputStream(dhruv.getAbsolutePath().toString());
//convert to ByteBuffer
ByteBuffer byteBuffer =
ByteBuffer.wrap(IOUtils.toByteArray(inputStream));
Log.d("lol", Arrays.toString(byteBuffer.array()));
Image image = new Image();
Image image2 = new Image();
image.withBytes(buffer);
image2.withBytes(byteBuffer);
CompareFacesRequest compare = new CompareFacesRequest();
compare.withSourceImage(image);
compare.withTargetImage(image2);
CompareFacesResult result = client.compareFaces(compare);
result.getFaceMatches();
} catch(...) {} // catched the error
我得到的错误是:
3247/com.busradeniz.detection D/lol: 1 validation error detected: Value
'java.nio.HeapByteBuffer[pos=0 lim=0 cap=0]' at 'sourceImage.bytes' failed
to satisfy constraint: Member must have length greater than or equal to 1
(Service: AmazonRekognition; Status Code: 400; Error Code:
ValidationException; Request ID: a0489079-2c17-11e8-b8b8-23c9eaea153d)
我的代码中发生的事情是我正在转换从我在android上的文件路径中获取的图像(确认为正确)并将其转换为ByteBuffer,以便我可以使用withBytes传递它由AWS创建的Image对象。我为另一个ByteBuffer做了同样的事情,除了我将BitMap转换为ByteBuffer(这在代码中没有显示)。通过调试,我已经记录并发现两个ByteBuffers都是非空的并且功能齐全。我还尝试在CompareFacesRequest构造函数中传递图像,而不是使用withSource和withTarget图像方法。我也尝试在两个Image对象上调用getBytes来查看ByteBuffers是否确实通过了。
错误暗示我正在通过请求传递2个空的Image对象,因此它表示在Image对象中必须传递一个或多个字节。但我不确定是这样的。我不能为我的生活弄清楚为什么会这样,它似乎在其他地方工作。如果有人可以帮助我并确定答案,我真的很感激吗?
非常感谢, Dhruv
答案 0 :(得分:1)
当您在帖子中提到您将位图转换为字节缓冲区时, 源图像是“.bmp”文件?您也可以共享该代码,以帮助调试您的问题吗?
请注意,Rekognition仅支持PNG和JPEG文件格式(请参阅https://docs.aws.amazon.com/rekognition/latest/dg/limits.html)。