Неразрешенная ссылка: FirebaseVisionLabelDetectorOptions, FirebaseVisionCloudLabel - PullRequest
0 голосов
/ 01 февраля 2019

Я использовал Firebase ML Kit, чтобы сделать некоторую маркировку изображения в своем приложении.Все работало нормально, но сегодня, после обновления моих зависимостей gradle, я больше не могу использовать некоторые классы, такие как FirebaseVisionLabelDetectorOptions и FirebaseVisionCloudLabel.Они выделены красным цветом, и когда я наведу курсор мыши, я вижу следующее сообщение:

Неразрешенная ссылка: FirebaseVisionLabelDetectorOptions

Вот мой код:

class ImageActivity : AppCompatActivity() {

    // ... omited code for brevity

    private fun labelImages(image: FirebaseVisionImage) {

        val detector = FirebaseVision.getInstance()
                .visionLabelDetector

        val result = detector.detectInImage(image)
                .addOnSuccessListener { labels ->
                    for (label in labels) {
                        val text = label.label
                        val entityId = label.entityId
                        val confidence = label.confidence
                    }
                }
    }

    private fun labelImagesCloud(image: FirebaseVisionImage) {
        val options = FirebaseVisionCloudDetectorOptions.Builder()
                .setModelType(FirebaseVisionCloudDetectorOptions.LATEST_MODEL)
                .setMaxResults(30)
                .build()

        val detector = FirebaseVision.getInstance()
                .visionCloudLabelDetector

        val result = detector.detectInImage(image)
                .addOnSuccessListener(
                        object : OnSuccessListener<List<FirebaseVisionCloudLabel>> {
                            override fun onSuccess(labels: List<FirebaseVisionCloudLabel>) {
                                for (label in labels) {
                                    val text = label.label
                                    val entityId = label.entityId
                                    val confidence = label.confidence
                                }
                            }
                        })
    }
}

А вот мои зависимости от файла build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'
    implementation 'com.google.android.material:material:1.0.0'

    implementation 'com.google.firebase:firebase-core:16.0.6'

    implementation 'com.google.firebase:firebase-ml-vision:19.0.0'
    implementation 'com.google.firebase:firebase-ml-vision-image-label-model:17.0.2'

}

Я что-то упустил?

1 Ответ

0 голосов
/ 01 февраля 2019

Причина, по которой Android Studio не может найти эти классы, заключается в том, что они были переименованы в версии 19.0.0 SDK ML Kit, как вы можете видеть в обновленной Документации .

Вот список изменений:

Классы

FirebaseVisionLabelDetectorOptions -> FirebaseVisionOnDeviceImageLabelerOptions

FirebaseVisionCloudDetectorOptions -> FirebaseVisionCloudImageLabelerOptions

FirebaseVisionLabelDetector -> FirebaseVisionImageLabeler

FirebaseVisionCloudLabelDetector -> FirebaseVisionImageLabeler

FirebaseVisionLabel -> FirebaseVisionImageLabel

FirebaseVisionCloudLabel-> FirebaseVisionImageLabel

Методы

getVisionCloudLabelDetector() -> getCloudImageLabeler()

getVisionLabelDetector() -> getOnDeviceImageLabeler()

getLabel() -> getText()

detectInImage() -> processImage()


Таким образом, в основном ваш код станет:

class ImageActivity : AppCompatActivity() {

    // ... omited code for brevity

    private fun labelImages(image: FirebaseVisionImage) {
        val options = FirebaseVisionOnDeviceImageLabelerOptions.Builder()
                .setConfidenceThreshold(0.8f)
                .build()

        val detector = FirebaseVision.getInstance()
                .onDeviceImageLabeler

        val result = detector.processImage(image)
                .addOnSuccessListener { labels ->
                    for (label in labels) {
                        val text = label.text
                        val entityId = label.entityId
                        val confidence = label.confidence
                    }
                }
    }

    private fun labelImagesCloud(image: FirebaseVisionImage) {
        val options = FirebaseVisionCloudImageLabelerOptions.Builder()
                .setModelType(FirebaseVisionCloudImageLabelerOptions.LATEST_MODEL)
                .setMaxResults(30)
                .build()

        val detector = FirebaseVision.getInstance()
                .cloudImageLabeler

        val result = detector.processImage(image)
                .addOnSuccessListener(
                        object : OnSuccessListener<List<FirebaseVisionImageLabel>> {
                            override fun onSuccess(labels: List<FirebaseVisionImageLabel>) {
                                for (label in labels) {
                                    val text = label.text
                                    val entityId = label.entityId
                                    val confidence = label.confidence
                                }
                            }
                        })
    }
}
...