问题描述
嗨,我是 Android 编程新手。
如标题,如何使用CameraX或Camera2或OpenCV提高拍照速度? 我的项目目标是使用 Android 和 OpenCV 尽快处理图像(4k 图像)。
如果您有任何意见,请告诉我。
void bindPreview(@NonNull ProcessCameraProvider cameraProvider) {
Preview preview = new Preview.Builder()
.setTargetAspectRatio(AspectRatio.RATIO_16_9)
.build();
CameraSelector cameraSelector = new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build();
executor = Executors.newSingleThreadExecutor();
ImageAnalysis imageAnalysis = new ImageAnalysis.Builder()
.setTargetAspectRatio(AspectRatio.RATIO_16_9)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build();
ImageCapture imageCapture = new ImageCapture.Builder()
.setTargetAspectRatio(AspectRatio.RATIO_16_9)
.setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
.build();
camera_capture_button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Log.v("Info","Button Click");
imageCapture.takePicture(executor,new ImageCapture.OnImageCapturedCallback() {
@Override
public void onCaptureSuccess(@NonNull ImageProxy image) {
super.onCaptureSuccess(image);
Log.v("Info","Capture Success = W:" + image.getWidth() + "/" + "H:" + image.getHeight());
Bitmap bitmap = toBitmap(image);
Log.v("Info","Bitmat cvt = W:" + bitmap.getWidth() + "/" + "H:" + bitmap.getHeight());
Mat matOriginal = new Mat();
Mat matResult = new Mat();
Utils.bitmapToMat(bitmap,matOriginal);
Log.v("Info","Mat cvt = W:" + matOriginal.width() + "/" + "H:" + matOriginal.height());
Imgproc.cvtColor(matOriginal,matResult,Imgproc.COLOR_BGR2HSV);
image.close();
}
@Override
public void onError(@NonNull ImageCaptureException exception) {
Log.v("Info","Capture Error");
exception.printStackTrace();
}
});
}
});
这是用来测量时间的 Logcat 消息
2021-05-12 16:20:40.427 V/Info:按钮点击
2021-05-12 16:20:40.976 V/Info:捕获成功 = W:3840/H:2160
2021-05-12 16:20:41.092 V/Info:位图 cvt = W:3840/H:2160
2021-05-12 16:20:41.106 V/Info:Mat cvt = W:3840/H:2160
作为结果
549 毫秒 - takePicture(我觉得太慢了)
116 毫秒 - 位图转换
014 毫秒 - 垫转换
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)