gpt4 book ai didi

android - 如何在Android上安装JavaCV和使用FrameGrabber

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:35 25 4
gpt4 key购买 nike

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

  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"文件夹,而不创建任何新的子目录。

    (我不明白的部分是“Extract all the *.so files from javacv-android-arm.jar”,我只是插入了javacv-android-arm.jar文件在 libs/armeabi 文件夹内)

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

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

之后我从 here 下载了 OpenCV2.4.3和来自 here 的 ffmpeg并将文件提取到我的 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。

祝你好运!

关于android - 如何在Android上安装JavaCV和使用FrameGrabber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com