Help us understand the problem. What is going on with this article?

Android StudioでOpenCVを使う

はじめに

AndroidStudioでOpenCVを導入する方法についてのメモです。
qiitaにもいくつか投稿がありますが、AndroidStudioのバージョンやOpenCVのバージョン等によって、
微妙に皆設定が違うようなので、ここでは自分が行った設定についてメモしておきます。

動作確認環境

  • Windows 10 64bit
  • Android Studio 3.4.1 (update前の3.2.1でも動作確認済)
  • OpenCV 4.1.0

Android Stduioはインストール済みであることが前提。

OpenCVのダウンロード

下記どちらからでもダウンロード可。Android版を選択。

ダウンロード後は解凍して、適当なところに配備。後でAndroid StudioからImport。

新規プロジェクトの作成

  • メニューバーから File -> New -> New Project -> Empty Activity
  • Name, Packag name等は適宜設定。Languageは「Java」、Minimum API levelは「28」 にしました
    • ただ、28だと新しすぎるので、もう少し下げても良いかも。ちなみに15だと低すぎてエラー発生。
  • Finishボタンを押したら、Buildが実行されしばらく待ちます
  • Android端末をUSBでPCに接続して、右上の▶か、メニューバーからRun->Runを実行すると「Hello World」が表示されることを確認

OpenCVの取り込み

  • メニューバーから File -> New -> Import Module
  • Source directoryには、上記で解凍したzipのパスからsdkフォルダを指定
  • Module nameには、適宜わかりやすい名前をつける。ここでは「opencv」
    (デフォルトでは「:sdk」になっているので、何のsdkか分かりづらい)

opencv.png

  • Finishボタンを押す
  • index構築でしばらく時間がかかるので終わるのを待つ

モジュールの依存関係設定

  • メニューバーから File -> Project Structure を選択
  • 左側のメニューから Dependencies -> app 選択 (Android Studio 3.4.1では3.2系とUIが違った)
  • 右上の + アイコンをクリックして 3: Module dependency を選択

OpenCV_module_dependencies.png

  • 上記で設定したModule name (opencv)を選択してOK

OpenCV_module_dependencies2.png

  • OKした後はこんな感じに追加される

OpenCV_module_dependencies3.png

その他の設定

OpenCVのバージョン3以下(?)で必要だったらしい下記対応はやらなくても動作

  • jniLibsへのsoライブラリのコピー
  • build.gradleのsdkのバージョン変更

動作確認

画面にOpenCVのバージョンを表示するサンプル

  • 個人的にLinearLayoutが好きなので、そこにTextView追加
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

MainActivity.java
package com.example.myopencv;  // ★適宜自分のパッケージ名に変更

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import org.opencv.android.OpenCVLoader;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.text1); 
        textView.setText(OpenCVLoader.OPENCV_VERSION);  // ★OpenCVのバージョンを設定
    }
}

  • 今回は4.1.0を入れたので、画面には4.1.0が表示

さて、これからOpenCVをどう試すかな…

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした