Android studio で OpenCV4.1.0 を使う
概要
とある画像認識を使うAndroidアプリケーション開発を始めました。
参考にさせて頂けるOpenCV + Android 環境構築のページはあるのですが、Versionが変わったからなのか、手順通りに行かないことがあったので自分の環境での手順を整理
環境
- Windows 10 Home
- Android studio Ver3.4 (を使ってKotlinで作ります)
- OpenCV 4.1.0
OpenCV準備
Android用のOpenCVをダウンロードします。
https://github.com/opencv/opencv/releases
対象ファイル( opencv-4.1.0-android-sdk.zip)
どこかに解凍しておきます。(私はworkspaceで解凍しました。)
プロジェクト作成
Android studioでプロジェクトを作成します。
Activityは何でも良い
API levelは古いと今後の作業でエラーになりました。
(→ そのため 28にしました。)
動作確認用コード作成
OpenCVのversionを表示するソースコードを作成します。
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val txtVersion : TextView = findViewById(R.id.version)
if (OpenCVLoader.initDebug()) {
txtVersion.text = "OpenCV Version: " + OpenCVLoader.OPENCV_VERSION
} else {
txtVersion.text = "OpenCV Version: Not found."
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/version"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
今のままだとOpenCVをimportしていないので、以下のOpenCVLoaderが見つからないエラーが起きます。
Unresolved reference: OpenCVLoader
OpenCVをimport
Android studioのメニュー
[File] – [New] – [Import Module from source] を選択します。

解凍してきたOpenCVのディレクトリ/sdkを選択、
Module nameに適当に入力 (OpenCV410にしました。) して、
finishを押下します。

※ 多くのサイトで、OpenCV-android-sdk/sdk/java になっていますが、私の環境ではjavaを含むとdependenciesの設定ができませんでした。
これでappと同じ階層にOpenCV410が追加されます。

dependenciesの設定
Android studioのメニュー
[File] – [Project Structure] を選択します。

Project Structureのメニュー
[Dependencies] – [app] – Declared Dependenciesの左上の[+]から
Module Dependency を押下します。

Add Module DependencyからOpenCV410(追加した名前)にチェックを入れてOKを押下します。

コード更新
これでimportできるようになるので、import文を追加します。
(OpenCVLoader のエラー箇所でAlt + Enterでも可)
import org.opencv.android.OpenCVLoader
実行
versionが表示されました。
