10

我正在关注本教程,但使用的是 Android Studio。我已完成以下步骤:

在 Android Studio 中创建一个新项目

将 OpenCV-2.4.5-sdk/sdk/java 添加为模块

右键单击我的主模块->更改模块设置->将上面的opencv模块添加为依赖项

对于我的 MainActivity,我使用了以下代码(从其中一个示例中删除):

package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;

public class MainActivity extends Activity implements CvCameraViewListener {
    private CameraBridgeViewBase mOpenCvCameraView;

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i("Yay", "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

    @Override
    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_5, this, mLoaderCallback);
    }

    @Override
    public void onCameraViewStarted(int width, int height) {

    }

    @Override
    public void onCameraViewStopped() {

    }

    @Override
    public Mat onCameraFrame(Mat inputFrame) {
        return null;
    }
}

Android Studio 的文本编辑器可以识别我导入的包(如 org.opencv.android),但是当我编译时出现以下错误:

Gradle: error: package org.opencv.android does not exist
Gradle: error: package org.opencv.android does not exist
Gradle: error: package org.opencv.android.CameraBridgeViewBase does not exist

有谁知道为什么会这样?

4

7 回答 7

12

我在 OS X 上的 Android Studio 遇到了类似的问题。我编写了代码,Android Studio 会看到我引用的 .jar,并声明了依赖项,但是当 Gradle 需要构建项目时,没有去。

我打开了“build.gradle”文件,不得不手动添加依赖项。例如,这是我的完整文件:

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/jsoup-1.7.2.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

您可以猜到,我添加的行是引用 Gson 和 Jsoup 的行。

于 2013-05-19T18:42:38.243 回答
4

这个答案的启发,这些是我所做的步骤:

  • 将 OpenCV 2.4.5 jar文件(在我的情况下为“opencv-library-2.4.5.jar”)放入项目的libs文件夹中
  • 右键单击它并选择添加为库
  • 在build.gradle文件的依赖项部分输入:compile files('libs/opencv-library-2.4.5.jar')
  • 做一个干净的构建。它可以在 android studio 中完成,但我也运行了项目文件夹中包含的gradlew.bat

现在,该项目应该构建并运行良好。

注意:在更高版本的 OpenCV(例如 2.4.7)中,可以在...\build\java.

于 2013-08-05T15:36:49.853 回答
1

我遇到了类似的问题。

就我而言,是 Android Studio 未能为我添加 Gradle 依赖项。我必须自己在项目的 gradle 文件中添加它:

编译项目(“:openCVLibrary2410”)

它解决了这个问题。我希望这有帮助。

于 2015-01-29T15:43:23.770 回答
1

最近,我通过以下方式解决了上述问题:

  1. 右键单击项目,
  2. 打开模块设置 (F4)
  3. 打开依赖项选项卡窗格
  4. 点击+,添加模块依赖(带编译选项)

然后一切正常。opencv 库是我项目中的另一个模块

于 2015-05-04T20:55:31.490 回答
0

Trying to Add to the Dependency in Android Studio is fruitless there is a bug.

Try this instead:

  • Download OpenCV-2.4.5-android-sdk.zip from OpenCV site

    • Extract to where ever as OpenCV-2.4.5-android-sdk, mine happened to be

      /home/anthony/Documents/OpenCV-2.4.5-android-sdk/

    • Open IntelliJ and choose Import

    • Select the folder to import

      /home/anthony/Documents/OpenCV-2.4.5-android-sdk/sdk/java/

      yours will be a little different, don't worry, just chose where you extracted OpenCV-2.4.5-android-sdk

    • Once the Import wizard finishes, build the app with menu

Build -> Rebuild Project

  • Close Project

  • Create New or Open existing project
  • Then

File->Import Module

  • This time select

/home/anthony/Documents/OpenCV-2.4.5-android-sdk/sdk/java/XXX.iml

mine was sdk.iml, but yours could be anything but there will be only one

iml file Select iml file to import module

You can now start using OpenCV functions, start by typing

import org.

once you type the period IntelliJ should drop a list of options one of which is

opencv

Now OpenCV is correctly integrated in your IDE

The rest is up to you.

于 2013-06-28T15:41:15.627 回答
0

我找到了解决方法,现在一切正常。

我必须构建一个 Jar 文件(openCV.jar),然后将其添加为库而不是模块,最后在 gradle.build 文件中添加了这一行

compile files('libs/openCV.jar').

所以最后我开始使用库代码并且我的构建是好的。

不知道这样好不好 但我就是这样做的。希望能帮助到你。

于 2013-05-22T18:27:20.393 回答
0

在我的 intellij IDE 中,我修复如下:
- 指向您的应用程序(在您的项目中)并单击 F4(默认情况下集中模块设置)
- 选择 Android-Gradle
- 选择选项卡依赖
项 - 添加(选择右上角的 + 按钮) 依赖:您可以选择通过 maven、文件或...添加,这取决于您。就我而言,我从 maven 添加了新的 opencsv。
- 单击确定完成,您的项目将自动重建。

完毕。

于 2016-05-12T05:31:00.217 回答