Как показать ограничивающий прямоугольник для обнаружения текстов на изображении с помощью Google Cloud vision API? - PullRequest
0 голосов
/ 01 июля 2019

У меня проблема с отображением ограничительной рамки в моем приложении.

Мое приложение может обнаруживать текст на изображениях и отображать текст, обнаруженный в режиме прокрутки.

Но я хотел бы изменить отображение с отображения символа в представлении прокрутки на нажатие ограничивающего прямоугольника, который окружает тексты на этом изображении, и затем отображение результатов вместо этого.

Это мой код, который результаты показывают в представлении прокрутки.

        BitmapDrawable drawable = (BitmapDrawable) mImageView.getDrawable();
        Bitmap bitmap = drawable.getBitmap();
        lvLabel.setBackground(drawable);
        String data = CloudVision.convertBitmapToBase64String(bitmap);
        while (data.getBytes().length > 10400000){
            bitmap = Bitmap.createScaledBitmap(bitmap,(int)(bitmap.getWidth()*0.8), (int)(bitmap.getHeight()*0.8), true);
            data = CloudVision.convertBitmapToBase64String(bitmap);;
        }
        CVRequest request = createCVRequest(data);
        CloudVision.runImageDetection(apiKey, request, this);
    }

    private CVRequest createCVRequest(String data) {
        CVRequest.Image image = new CVRequest.Image(data);
        CVRequest.Feature feature = new CVRequest.Feature(CVRequest.FeatureType.TEXT_DETECTION, 6);
        List<String> imgHint = new ArrayList<>();
        imgHint.add("en");
        imgHint.add("th");
        CVRequest.ImageContext imageContext = new CVRequest.ImageContext(imgHint,null);
        List<CVRequest.Feature> featureList = new ArrayList<>();
        featureList.add(feature);
        List<CVRequest.Request> requestList = new ArrayList<>();
        requestList.add(new CVRequest.Request(image, featureList));
        return new CVRequest(requestList);
    }

    private void setCVResponse(CVResponse cvResponse) {
        if (cvResponse != null && cvResponse.isResponsesAvailable()) {
            CVResponse.Response response = cvResponse.getResponse(0);

            if (response.isTextAvailable()) {
                LabelAdapter adapter = new LabelAdapter(response.getTexts());
                lvLabel.setAdapter(adapter);

            }
        }
        hideLoading();
    }```

...