我终于想通了!
发生的事情是,当试图从OpenCV中提取帧时 onCameraFrame 它默认为一个很小的分辨率(受屏幕尺寸影响),因为它有效地截取了当时屏幕上的内容。
onCameraFrame
解决方案是实现 camera.takePicture 在我自己的课堂上实现了 JavaCameraView (类似于问题中显示的那个 这里 ),在拍照之前,选择设备上可用的最高分辨率。
camera.takePicture
JavaCameraView
代码如下:
fun takePic(jpgCallback: Camera.PictureCallback) { val params = mCamera.parameters params.jpegQuality = 100 //doesn't hurt to be sure val supportedSizes = params.supportedPictureSizes if (supportedSizes.isNullOrEmpty().not()) { var w = 0 var h = 0 for (size in supportedSizes) { if (size.width > w || size.height > h) { w = size.width h = size.height } } Log.e("----", "Using largest supported size... w: $w // h: $h") params.setPictureSize(w, h) } mCamera.parameters = params mCamera.takePicture(null, null, jpgCallback) }