当前位置: 首页 > 知识库问答 >
问题:

Android:如何延迟捕捉相机拍摄的特定帧?

咸皓
2023-03-14

我正在开发一个灯光(LED)通信系统,使用Android手机摄像头作为接收器,对摄像头帧进行阈值处理。为此,我使用了preview的回调方法onPreviewFrame。为了更准确,需要每隔几帧延迟一帧的捕获,以便系统将重新同步。

我的问题是:

  1. 如何延迟单个帧的捕获(而不是预览)

*为了限制相机的fps速率,我使用了setPreviewFpsRange、setAutoWhiteBalanceLock和setAutoExposureLock。

共有1个答案

向子安
2023-03-14

你可以试试新的android.hardware。在API level 21中添加了camera2软件包,该软件包取代了不推荐使用的Camera类,并提供了对摄像头功能的细粒度控制:

获取CameraManager服务

CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);

检索设备上可用的摄像机列表

String[] cameraIdList = manager.getCameraIdList();

遍历相机列表以选择具有所需特征的相机

for(String cameraId:cameraIdList)
{
    CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
}

创建带有预览和静态捕捉请求的相机回调类

private class CameraCallback extends CameraDevice.StateCallback
{
    @Override
    public void onOpened(CameraDevice camera)
    {
        CaptureRequest previewRequest = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW).build();

        CaptureRequest stillCaptureRequest = camera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE).build();
    }
}
 类似资料:
  • 我正在尝试编写一些objective-c代码,允许在特定的时间延迟后通过iPhone摄像头捕捉帧。我在网上找到的任何例子都捕捉到了摄像机输入的“当前”帧(即实时帧捕捉)。我正在寻找一种实时性较差的帧捕获方法——一种捕获具有特定时间延迟的帧的方法。有什么想法吗?

  • 我有一个有4个参数的类。还有一个测试,将空对象放入。有可能捕捉到这个空值吗?我的意思是,有些测试将IlligalArgumentException放在了一起。所以,如果我尝试用try-catch块捕捉这个空对象,对于整个costructor块,这个可以工作,但其他测试会崩溃,反之亦然。

  • 我正在开发一个应用程序,在这个应用程序中,我以纵向方向拍摄照片,问题是当我稍后检索图像时,它是横向方向的(图片已逆时针旋转90度)。我曾经在课下使用过,但这里每次都是0(零)。所以,我不知道怎么解决它。

  • 所以我遇到了一个问题,前面在我提问的问题中提到过:将图像(ACTION_image_CAPTURE)上载到Firebase存储 我对这个问题进行了更多的搜索,并应用了Android Studio文档:https://developer.android.com/training/camera/photobasics.html#TaskPhotoView 所以,在您阅读代码之前,我基本上想说一下需要什

  • 我有一个主题,它发出不同的和值 我想延迟值。如果发出了-值,而延迟是“延迟”,那么什么都不应该发生(应该是“无值更改”)。 考虑这张桌子 我希望情况很清楚。

  • 我一直在开发一个摄像头应用程序,所有的工作都是拍摄和保存照片。但我希望在拍摄照片时显示的Imageview能够保存在实际拍摄的照片中。可能吗? 现在,我一直试图让图像视图与我绘制相机预览的布局相同。 我想,也许如果它画在与相机相同的视图上,那么它也会看到图像和照片。 有没有人知道这是否可能,或者我必须采取另一种方法?如果是这样,链接到其他解决方案如何做到这一点将不胜感激:) 谢谢 编辑:我一直遵循