Android如何从相机捕获两个连续的帧

标签 android

我正在尝试在 Android 设备上编写光流程序。 我的问题是从相机获取两个连续的帧。

这是获取一帧的代码。

mCamera.setPreviewCallback(new PreviewCallback() {
        public void onPreviewFrame(byte[] data, Camera camera) {
            synchronized (SampleViewBase.this) {
                mFrame2 = data;
                SampleViewBase.this.notify();
            }
        }
    });     

最佳答案

那么你不能做类似的事情吗:

private byte[] currFrame;
private byte[] prevFrame;    

private void copyFrame(byte[] a){
        if(a != null) prevFrame = a;
}

mCamera.setPreviewCallback(new PreviewCallback() {
            public void onPreviewFrame(byte[] data, Camera camera) {
                synchronized (SampleViewBase.this) {
                    copyFrame(currFrame);              
                    currFrame = data;
                    SampleViewBase.this.notify();
                }
            }
        });  

我不确定这是正确的 Java 语法,但只需复制 currentFrame,然后再将 data 分配给它。无论如何,我认为您还可以使用 VideoCapture 类来获取已经采用 Mat 格式的帧。我不确定这个类在最新版本中是否仍然可用,但根据我使用 Opencv 2.3 的经验,使用它来抓取相机帧比使用 Android 相机要快得多。

关于Android如何从相机捕获两个连续的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638650/

相关文章:

java - PHP解码Base64,刷新并保留数据

android - 如何从 PhoneGap/Cordova 应用程序直接导航到 Google Play 商店中的应用程序?

android - 从sqlite数据库中获取总数

java - 如何使用Config.getPhotoPath()?

android - 特威利奥 : Getting child call sid in android client

android - 在 android wear Action 中更改语音识别器的语言

java - 人们可以轻松访问 Android Realm 文件吗?

javascript - NativeScript Android Build 抛出错误 : Command gradlew. bat 失败,退出代码 1

android - 以编程方式禁用和启用 Android Activity 中的方向更改

android - 使用嵌套导航进行深度链接(react-native)