相关疑难解决方法(0)

如何在Camera2 API Android 5.0中获得单个预览框架?

我正在尝试使用Camera2 API获取QR码扫描功能的预览框架.在旧的Camera API中,它很简单:

    android.hardware.Camera mCamera;
    ...
    mCamera.setPreviewCallback(new Camera.PreviewCallback() {
        @Override
        public void onPreviewFrame(byte[] data, Camera camera) {
            // will be invoked for every preview frame in addition to displaying them on the screen             
        }
    });
Run Code Online (Sandbox Code Playgroud)

不过,我不能找到一种方法来实现,使用 Camera2 API.我想收到多个我可以处理的帧 - 最好的是接收旧API中的字节数组.任何想法如何做到这一点?

android android-hardware android-camera android-5.0-lollipop

21
推荐指数
2
解决办法
1万
查看次数

将android.media.Image(YUV_420_888)转换为Bitmap

我正在尝试使用这里提出的camera2 api实现相机预览图像数据处理:使用Android L和Camera2 API进行相机预览图像数据处理.

我使用onImageAvailableListener成功接收回调,但是为了将来的处理,我需要从YUV_420_888 android.media.Image获取位图.我搜索了类似的问题,但没有一个帮助.

你能否建议我如何将android.media.Image(YUV_420_888)转换为Bitmap,或者有更好的方法来监听预览帧?

android bitmap yuv android-camera

13
推荐指数
3
解决办法
1万
查看次数

Android camera2输出到ImageReader格式YUV_420_888仍然很慢

我正在尝试让Android camera2在后台服务中运行,然后在回调ImageReader.OnImageAvailableListener中处理帧.我已经使用建议的原始格式YUV_420_888来获得最大fps,但是我只能在分辨率640x480上获得7fps左右.这甚至比我使用旧的Camera接口(我想升级到Camera2以获得更高的fps)或使用OpenCV JavaCameraView(我不能使用它,因为我需要在后台服务中运行处理)更慢.

以下是我的服务类.我错过了什么?

我的手机是运行Android 5.0.2的Redmi Note 3

public class Camera2ServiceYUV extends Service {
    protected static final String TAG = "VideoProcessing";
    protected static final int CAMERACHOICE = CameraCharacteristics.LENS_FACING_BACK;
    protected CameraDevice cameraDevice;
    protected CameraCaptureSession captureSession;
    protected ImageReader imageReader;

    // A semaphore to prevent the app from exiting before closing the camera.
    private Semaphore mCameraOpenCloseLock = new Semaphore(1);


    public static final String RESULT_RECEIVER = "resultReceiver";
    private static final int JPEG_COMPRESSION = 90;

    public static final int RESULT_OK = 0;
    public static final …
Run Code Online (Sandbox Code Playgroud)

android opencv android-camera android-camera2

8
推荐指数
1
解决办法
2126
查看次数

如何在Android5.0中实时使用camera2 API获取每个帧数据

我现在正在使用camera2Basic并试图让每个帧数据进行一些图像处理.我在Android5.0中使用camera2 API,当只进行相机预览并且它是流畅的时候一切都很好.但是当我使用ImageReader.OnImageAvailableListener回调来获取每个帧数据时,预览会停滞不前,这会导致糟糕的用户体验.以下是我的相关代码:

这是摄像头和ImageReader的设置,我设置的图像格式是YUV_420_888

public<T> Size setUpCameraOutputs(CameraManager cameraManager,Class<T> kClass, int width, int height) {
    boolean flagSuccess = true;
    try {
        for (String cameraId : cameraManager.getCameraIdList()) {
            CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId);
            // choose the front or back camera
            if (FLAG_CAMERA.BACK_CAMERA == mChosenCamera &&        
                    CameraCharacteristics.LENS_FACING_BACK != characteristics.get(CameraCharacteristics.LENS_FACING)) {
                continue;
            }
            if (FLAG_CAMERA.FRONT_CAMERA == mChosenCamera &&  
                    CameraCharacteristics.LENS_FACING_FRONT != characteristics.get(CameraCharacteristics.LENS_FACING)) {
                continue;
            }
            StreamConfigurationMap map = characteristics.get(
                    CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);

            Size largestSize = Collections.max(
                    Arrays.asList(map.getOutputSizes(ImageFormat.YUV_420_888)),
                    new CompareSizesByArea());

            mImageReader = ImageReader.newInstance(largestSize.getWidth(), largestSize.getHeight(),
                    ImageFormat.YUV_420_888, 3); …
Run Code Online (Sandbox Code Playgroud)

android android-camera

7
推荐指数
1
解决办法
4644
查看次数

Android Camera2 API显示已处理的预览图像

新的Camera 2 API与旧的相比非常不同.显示操纵的相机帧到管道的用户部分让我感到困惑.我知道使用Android L和Camera2 API相机预览图像数据处理有很好的解释,但显示帧仍然不清楚.我的问题是,在一些处理过程中,在ImageReaders回调函数中显示帧的方式是什么,同时保持Camera2 api管道的效率和速度?

示例流程:

camera.add_target(imagereader.getsurface) - >关于imagereaders回调做一些处理 - >(在屏幕上显示已处理的图像?)

解决方法创意:每次处理新帧时,都会将位图发送到imageview.

android android-camera

6
推荐指数
1
解决办法
9005
查看次数

使用camera2 API获取单张图像并用ImageView显示

我想使用 Camera2 API 从相机获取单个帧并使用 ImageView 显示它。我发现了一些密切的问题,例如

/sf/ask/1782359421/

我还查看了 Camera2Basic 示例,但它太复杂并且不完全是我所需要的。

我编写了代码,它基于我在网上看到的一些示例,应该可以实现,但它不起作用,我不明白为什么。

应用程序不会崩溃,但只是不在 ImageView 上显示任何内容。我在任何函数调用中都使用了日志消息,以便尝试保持 logcat 清晰。

另外,该应用程序是 logcat 说“该应用程序可能在后台做了太多工作......”我不明白这怎么可能,因为我制作了一个captureRequest而不是一个repeatingCaptureRequest.

这是代码和 logcat: 代码:

public class CameraImageReaderActivity extends AppCompatActivity {

private final static String TAG = "CAMERA_IMAGE_READY: ";
private ImageReader imageReader;
private String cameraId;
private CameraDevice camera;
private HandlerThread handlerThread;
private Handler handler;
private Surface imageReaderSurface;
private ImageView imageView;

private CameraDevice.StateCallback cameraStateCallback = new CameraDevice.StateCallback() {
    @Override
    public void onOpened(CameraDevice cameraDevice) {
        Log.d(TAG, "onOpend: CAMERA OPENED");
        camera = …
Run Code Online (Sandbox Code Playgroud)

android android-camera2

5
推荐指数
1
解决办法
7521
查看次数