Я устанавливаю желаемый FPS с помощью Camera2Interop.Extender( ) и установите для параметра CONTROL_AE_TARGET_FPS_RANGE значение Range(60,60), например
Код: Выделить всё
val previewBuilder = Preview.Builder()
.setTargetResolution(currentRes)
...
val cameraSelector = CameraSelector.Builder()
.requireLensFacing(cameraLens)
.build()
val fps = ConfigurationService.fps.toInt() // 60
val frameDuration = 1000000000L/fps // 1666666
if (cameraSelector.lensFacing!! == CameraSelector.LENS_FACING_FRONT) {
Camera2Interop.Extender(previewBuilder)
.setCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,
Range(fps, fps))
.setCaptureRequestOption(
CaptureRequest.SENSOR_FRAME_DURATION,
frameDuration
)
}
Код: Выделить всё
val preview = previewBuilder.build()
val analysis = ImageAnalysis.Builder()
.setTargetResolution(currentRes)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setOutputImageFormat(ConfigurationService.cameraInputType)
.setImageQueueDepth(countOfCores)
.build()
analysis.setAnalyzer(Executors.newWorkStealingPool(Runtime.getRuntime().availableProcessors()), analyzer)
val useCaseGroup = UseCaseGroup.Builder()
.addUseCase(preview)
.addUseCase(analysis)
.build()
try {
cameraProvider?.unbindAll()
camera = cameraProvider?.bindToLifecycle(
context as LifecycleOwner,
cameraSelector,
useCaseGroup
)
previewView.implementationMode = PreviewView.ImplementationMode.PERFORMANCE
preview.setSurfaceProvider(
previewView.surfaceProvider
)
} catch (e: Exception) {
Log.e("CameraClassificationWrapper", "Use case binding failed", e)
}
Поскольку я использую анализатор для выполнения реальных измерений с использованием откалиброванной камеры для определенных разрешений, мне нужно, чтобы изображения соответствовали тому, что я откалиброван с помощью.
Я видел несколько упоминаний о такой проблеме для других платформ или просто для общего использования.
Я знаю, что у Camera2 есть способ CameraConstrainedHighSpeedCaptureSession, и я бы использовал его, за исключением того, что все приложение уже использует CameraX, и мне бы очень хотелось избежать замены всей серверной части камеры.
Есть можно ли получить полное разрешение (до 1080p) при 60 кадрах в секунду с помощью CameraX?
Подробнее здесь: https://stackoverflow.com/questions/784 ... image-crop
Мобильная версия