所以我有一个设备(阿尔卡特5033D 1)的问题,它总是给我480 × 640的分辨率用于CameraX分析。这是我初始化它的最后一个版本的代码:
private void initCameraAnalysis(Size resolution) {
Log.d(TAG, "initCameraAnalysis: ");
cameraAnalysis = new ImageAnalysis.Builder()
.setTargetResolution(resolution)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setImageQueueDepth(0)
.build();
cameraAnalysis.setAnalyzer(
cameraExecutor,
new QualityAnalyzer()
);
}
我只是添加了这一部分,看看它是否有帮助,最初这些调用不存在,它们实际上对这个问题没有帮助:
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setImageQueueDepth(0)
在调用该方法时通过的分辨率如下,所以我请求720x1280,这就是我需要的(使用纵向方向):
initCameraAnalysis(new Size(720, 1280));
现在,这是一个低端设备,总是退回到480x640,但我有另一个由同事制作的应用程序,它仍然使用Camera2,并且可以使用相同的设备制作720x1280而没有问题,所以我确定该设备实际上能够做到720x1280。
此外,我已经添加了一个ImageCapture用例,一个可以做720x1280也没有问题,但我需要它在分析期间做720x1280。
所以我想知道是否有任何方法在分析用例中强制720x1280,尽管CameraX固执地不接受它,即使这意味着使用一些Camera2扩展或其他。
否则,我可能不得不使用Camera2重写整个应用程序,这似乎是在时间上倒退…
提前感谢!
我不知道你是否看过,但以防万一,我想指出这里所说的:
表示通过目标旋转支持的尺寸后在坐标框中的分辨率大小。例如,在自然目标旋转中具有纵向自然方向的设备请求纵向图像可能指定为480 × 640,而相同的设备,旋转90度并以横向为目标可能指定为640 × 480。
也许也可以试试:
val imageAnalysis = ImageAnalysis.Builder()
.setTargetResolution(Size(1280, 720))
.build()