Ich versuche, einen einfachen Barcode -Scanner mit dem ML -Kit -Analysator zusammen mit Lifecyclecameracontroller zu implementieren. Ich verwende Coordinate_System_view_referenced , sodass der ML Kit Analyzer die Koordinatenumwandlung zwischen der Kamera und der Vorschau gemäß der Dokumentation automatisch verarbeiten sollte. Aber im Landschaftsmodus sind die
Y -Koordinaten des Begrenzungsfelds immer ausgeschaltet, entweder zu weit nach oben oder zu weit unten, aber um ungefähr die gleiche Menge (siehe Screenshots). Zuerst dachte ich, dies sei ein Fehler in meinem Code, aber ich fand diese Beispielimplementierung (im Grunde genommen genau das, was ich will):
https://github.com/duma042/barsandq und das
Problem ist dort auch reproduzierbar. Auf einem echten Gerät ist es subtiler, aber immer noch deutlich sichtbar. < /P>
Fehlt mir hier etwas? Oder könnte dies ein Fehler im ML Kit Analyzer sein?
Code: Select all
private fun setupBarcodeScanner(controller: LifecycleCameraController) {
// ...
controller.setImageAnalysisAnalyzer(
mainExecutor,
MlKitAnalyzer(
listOf(barcodeScanner),
ImageAnalysis.COORDINATE_SYSTEM_VIEW_REFERENCED,
mainExecutor
) { result: MlKitAnalyzer.Result? ->
processBarcodeResults(result, barcodeScanner, previewView)
}
)
// ...
}
// ...
private fun processBarcodeResults(
result: MlKitAnalyzer.Result?,
barcodeScanner: BarcodeScanner,
previewView: PreviewView,
) {
val barcodes = result?.getValue(barcodeScanner) ?: return
if (barcodes.isEmpty()) return
val barcode = barcodes.firstOrNull() ?: return
Log.d(TAG, "BoundingBox: ${barcode.boundingBox}") //