Der ML Kit Analyzer gibt falsche Begrenzungsbox -Koordinaten im Landschaftsmodus mit Lifecyclecameracontroller zurück

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Der ML Kit Analyzer gibt falsche Begrenzungsbox -Koordinaten im Landschaftsmodus mit Lifecyclecameracontroller zurück

by Anonymous » 11 Apr 2025, 13:00

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}") //

Top