如何在Android上安装JavaCV并使用FrameGrabber

2024-02-19

有人可以告诉我我哪里做错了吗?这些是我遵循的步骤:

  1. 从 android 开发者网站下载 adt-bundle-windows

  2. 创建一个新项目和一个 libs/armeabi 文件夹

  3. 将 javacv-android-arm.jar、opencv-2.4.3-android-arm.zip 和 ffmpeg-1.0-android-arm.zip 中的所有 *.so 文件直接解压到新创建的“libs/armeabi”文件夹中,无需创建任何新的子目录。

    (我不明白的部分是“从 javacv-android-arm.jar 中提取所有 *.so 文件”,我只是将 javacv-android-arm.jar 文件插入 libs/armeabi 文件夹中)

  4. 导航到项目 > 属性 > Java 构建路径 > 库,然后单击“添加 JAR...”。

  5. 从新创建的“libs”文件夹中选择 javacpp.jar 和 javacv.jar。

之后我从以下位置下载了 OpenCV2.4.3here http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.3/OpenCV-2.4.3.exe/download和 ffmpeg 来自here http://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-20121029-git-11d695d-win64-shared.7z并将文件提取到我的 C:/ root 上。 最后设置我的系统路径后...,

C:\opencv\build\x64\vc10\bin;C:\ffmpeg-64\bin;C:\Program Files\Java\jdk1.7.0_10\bin

...如果我尝试在 Android 应用程序中简单地使用 FrameGrabber...

import com.googlecode.javacv.FFmpegFrameGrabber;
import com.googlecode.javacpp.Loader;
import com.googlecode.javacv.*;
import com.googlecode.javacv.cpp.*;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_calib3d.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        FFmpegFrameGrabber i = new FFmpegFrameGrabber("/mnt/sdcard/SinglePerson.avi"); 
    }

...我收到以下错误:

01-29 17:59:26.976: E/AndroidRuntime(30656): FATAL EXCEPTION: main
01-29 17:59:26.976: E/AndroidRuntime(30656): java.lang.NoClassDefFoundError: com.googlecode.javacv.FFmpegFrameGrabber
01-29 17:59:26.976: E/AndroidRuntime(30656):    at com.example.xxxxxxxxx.MainActivity.onCreate(MainActivity.java:23)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.Activity.performCreate(Activity.java:4465)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.os.Looper.loop(Looper.java:137)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at android.app.ActivityThread.main(ActivityThread.java:4424)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at java.lang.reflect.Method.invokeNative(Native Method)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at java.lang.reflect.Method.invoke(Method.java:511)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-29 17:59:26.976: E/AndroidRuntime(30656):    at dalvik.system.NativeStart.main(Native Method)

有人可以帮助我吗?


因此,jar 文件基本上是一个 zip 文件,如果将扩展名更改为“.zip”,您可以像使用 OpenCV 和 FFMPEG 一样提取其中包含的文件。

因此,将“javacv-android-arm.jar”重命名为“javacv-android-arm.zip”,从中提取.so 文件并将其复制到 libs/armeabi。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android上安装JavaCV并使用FrameGrabber 的相关文章

随机推荐