Android 相机 takePicture 使用预览小缓冲区

问题描述 投票:0回答:2

我正在使用 OPENCV 开发一个项目。我在 onCameraFrame 上有一些进程。当它显示预览时,用户可以拍照。但在某些设备中,我在调用 takePicture(...) 方法后出现错误。我应该怎么办?

E/Camera-JNI(11783): Manually set buffer was too small! Expected 539380 bytes, but got 460800!

新症状:此缓冲区的大小是我的帧大小,460800。我在 onCameraFrame 记录了帧大小。每帧的大小都是 460800。据我了解,takePicture 尝试使用预览缓冲区。而且它们的尺寸也不同。

android opencv java-native-interface android-camera
2个回答
1
投票

我解决了这类问题。 看来在Android 2.2.1上你必须在调用之前设置相机参数

camera.startPreview()

但是,在 Android 3.2.1 等更高版本的系统上,这不再是问题(但它可能是供应商特定的)。


1
投票

我解决了我的问题。我将缓冲区大小设置为与图片大小相匹配。但是通过预览,它开始表现出一种荒谬的行为,例如在某些设备上,在拍摄预览照片后不再继续,...因此,当我按下重拍或后退按钮时,我会关闭并重新启动预览。它解决了我所有的问题。

© www.soinside.com 2019 - 2024. All rights reserved.