java - 如何使用 Android Studio 在 Amazon Rekognition AWS 中检测人脸?

标签 java amazon-web-services android-studio amazon-rekognition

我尝试了很多方法,但我无法成功。我还没有找到任何适用于 Android 的源代码示例(关于 rekognition)

Developer Guide里面有JAVA的源代码,但是试了TT还是无法实现

我尝试通过从外部存储(从模拟器)发送图像文件来检测人脸 我不知道我做错了什么(我不擅长编码) 这是我的代码

AmazonRekognitionClient amazonRekognitionClient;
Image getAmazonRekognitionImage;
DetectFacesRequest detectFaceRequest;
DetectFacesResult detectFaceResult;
File file = new File(Environment.getExternalStorageDirectory(),"sungyeol.jpg.jpg");

public void test_00(View view) {
 ByteBuffer imageBytes;
 try{
        InputStream inputStream = new FileInputStream(file.getAbsolutePath().toString());
        imageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream));
        Log.e("InputStream: ",""+inputStream);
        Log.e("imageBytes: ","");
        getAmazonRekognitionImage.withBytes(imageBytes);

        // Initialize the Amazon Cognito credentials provider
        CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
                getApplicationContext(),
                "us-east-2:.......", // Identity Pool ID
                Regions.US_EAST_2 // Region
        );

        //I want "ALL" attributes
        amazonRekognitionClient = new AmazonRekognitionClient(credentialsProvider);

        detectFaceRequest = new DetectFacesRequest()
                .withAttributes(Attribute.ALL.toString())
                .withImage(getAmazonRekognitionImage);

        detectFaceResult = amazonRekognitionClient.detectFaces(detectFaceRequest);
        detectFaceResult.getFaceDetails();

    }
 catch(Exception ex){
   Log.e("Error on something:","Message:"+ex.getMessage());
 }

这是我的错误

02-04 09:30:07.268 29405-29405/? E/InputStream:: java.io.FileInputStream@a9b23e7
02-04 09:30:07.271 29405-29405/? E/Error on something:: Message:Attempt to invoke virtual method 'com.amazonaws.services.rekognition.model.Image com.amazonaws.services.rekognition.model.Image.withBytes(java.nio.ByteBuffer)' on a null object reference

什么是空对象引用? 我尝试更改文件路径,但他说没有这样的文件...当我更改为此路径时,上面有错误。 顺便说一句,我已经向用户请求了从 Android 模拟器访问文件夹的权限

请帮帮我 附言。抱歉我的英语不好

提前谢谢你。

最佳答案

现在我可以解决这些问题了。我经历过很多很多事情<3 <3 <3。 谢谢

我是泰国人,我不得不更加努力地寻找解决方案,因为缺乏特定语言的信息。这是我的解决方案。

我的解决方案是:

0.Rekognition 有一个设置端点--> http://docs.aws.amazon.com/general/latest/gr/rande.html#rekognition_region

1.在“空对象引用问题”上,我发现我必须先创建一个新对象,例如“Image image = new Image();” <-- “new” 命令在该类中创建一个对象实例

2.在上面的错误之后,又出现了更多的错误(Errors on NetworkOnMainThreadException),所以我尝试了一切直到找到这个页面--> https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html该页面说...

enter image description here

因此,我查找了有关 AsyncTask 的更多信息,然后我创建了一个 AsyncTask 类,然后我将所有有关初始化、请求和响应的代码移至 AsyncTask 类。 ตอนรันตอนท้ายๆน้ำตาจิไหล 我的代码有效...TT 结论是 sungyeol.jpg.jpg 文件有效

例如

private void testTask(){
  .... all code in the main thread particularly on the requests and responses
  from the services
 //print the response or the result
 //Log.e() makes the message in the android monitor red like an error
 Log.e("Response:", [responseparameter.toString()]);

}

//create the inherited class from the AsyncTask Class
//(you can create within your activity class)
class AsyncTaskRunner extends AsyncTask<String,String,String>{
    @Override 
    public String doInBackground(String ... input){
        testTask(); // call the testTask() method that i have created
        return null; // this override method must return String
    }

} 

//I've created a button for running the task
public void buttonTask(View view){
    AsyncTaskRunner runner = new AsyncTaskRunner();
    runner.execute();

}

有关 AsyncTask 的更多信息:

https://developer.android.com/training/basics/network-ops/connecting.html#AsyncTask

http://www.compiletimeerror.com/2013/01/why-and-how-to-use-asynctask.html#.WJdkqVOLTIU

我希望这些帮助:)

关于java - 如何使用 Android Studio 在 Amazon Rekognition AWS 中检测人脸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42041693/

相关文章:

amazon-web-services - go-sdk上s3前缀可以去掉吗?

tomcat - 如何模拟产品环境

android - 无法在 Android studio 和 Unity 中加载 libmain.so 作为库

amazon-web-services - 使用 UDP ECS 服务对 NetworkLoadBalancer 进行健康检查

java - EJB 3.0 - Context.Lookup 加载适当的 EJB Bean 失败

java - 当参数值为空时如何在@Cacheable中创建多个缓存键

java swing进度条不显示

android-studio - Android Studio Arctic Fox 与 JUnit4 不兼容?

google-app-engine - Android Studio中 "configuration: ' android-endpoints '"and "配置: 'endpoints' "in build. gradle有什么区别?

java - 存在并发方法调用时的事件顺序保证