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

Я заметил, что обработанное изображение (
Код: Выделить всё
processImageКод: Выделить всё
class PoseAnalyzer(
private val onSuccess: (result: AnalyzeResultData) -> Unit,
): ImageAnalysis.Analyzer {
private val options = PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.build()
private val poseDetector = PoseDetection.getClient(options)
@ExperimentalGetImage
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image
if (mediaImage != null) {
val rotationDegrees = imageProxy.imageInfo.rotationDegrees
val processImage = InputImage.fromMediaImage(mediaImage, rotationDegrees)
poseDetector.process(processImage)
.addOnSuccessListener { pose ->
val result = AnalyzeResultData(pose, processImage.toSizeData())
onSuccess(result)
}
.addOnFailureListener {
}
.addOnCompleteListener {
imageProxy.close()
}
}
}
}
Код: Выделить всё
private fun scaleAndGetOffset(
point: SizeData,
analyzedImage: SizeData,
screenSize: SizeData,
cameraSelector: CameraSelector,
): Offset {
val rateX = screenSize.x/analyzedImage.x
val rateY = screenSize.y/analyzedImage.y
return Offset(
x = if (cameraSelector == CameraSelector.DEFAULT_BACK_CAMERA) point.x * rateX else screenSize.x-point.x * rateX,
y = point.y * rateY
)
}

Как получить или преобразовать координаты анализатора, которые будут совпадать с предпросмотром?
Подробнее здесь: https://stackoverflow.com/questions/780 ... th-preview
Мобильная версия