【发布时间】:2018-08-29 12:15:47
【问题描述】:
我正在尝试在 android 上使用 Azure Face API。我正在从设备摄像头捕获图像,然后将其转换为 InputStream 以发送到检测方法。我不断收到错误“com.microsoft.projectoxford.face.rest.ClientException:图像尺寸太小”
我查看了文档,图像大小为 1.4Mb,在 1Kb-4Mb 范围内。我不明白为什么它不起作用。
Bitmap bitmap = cameraKitImage.getBitmap();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
bitmapdata = bos.toByteArray();
new FaceTask().execute(new ByteArrayInputStream(bitmapdata));
Face[] faces = faceServiceClient.detect(inputStreams[0], true, false, null);
【问题讨论】:
-
这似乎与我见过的其他编码示例相匹配。您是否已确认您从 cameraKitImage 获得了有效的图像数据?如果你使用 CompressFormat.JPEG,它仍然会失败吗?
-
是的,我尝试使用 JPEG 格式。我什至尝试缩放图像以增加大小。是的,我将图像转换为实际图像文件并打开,它是正确的。
-
感谢保存到文件并检查图像!我不知道API,只是大声思考,但是
inputStreams[0]指的是什么?如果它是ByteArrayInputStreams 的数组,并且第一个/唯一元素是由FaceTask().execute(...)填充的,这是时间问题吗? (各种位的命名表明.execute()可能发生在后台。 -
inputStreams[0] 是 ByteArrayInputStream 的一个实例。是的,此任务是使用 AsyncTask 在后台执行的。我之前在另一个应用程序中使用过检测方法,从未遇到过这个问题。我将如何解决时间问题,因为我不确定是否是。
-
这个问题还没有答案吗?有人找到解决方案了吗?
标签: android azure microsoft-cognitive face-api