プロジェクトの作成
上記のサイトに沿って、プロジェクトを作成し、Open CVをインポートする。
今回のプロジェクト名はOpenCVTestとする。
ビルドすると、以下のエラーが発生。
Fix Android build error: Plugin with id 'kotlin-android' not found.
これは、Kotlin-androidがないために生じるエラー。以下に沿って、修正。
OpenCVTest2/build.gradleを以下のように編集。
今回はGradle versionが5.1.1なので、Kotlin_versionは、1.3.11とする。
buildscript {
# ext.kotlin_version = '1.6.21'
ext.kotlin_version = '1.3.11' # add
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" # add
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
ERROR: A problem occurred configuring project ':opencv'.
ERROR: A problem occurred configuring project ':opencv'.
opencvのバージョンを4.8.0から3.4.4に変更。project structureから、以前のopencvを削除し、settings.gradleからも以前のopencvのincludeを削除する。
project structureのAll modules
と、app
に、opencvが含まれているか確認する。
ビルドすると以下のエラーが発生した。
ERROR: The minSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.
Remove minSdkVersion and sync project
Affected Modules: opencv3.4.4
そこで、opencv3.4.4/java/AndroidManifest.xmlの以下をコメントアウト。
<!--<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" />-->
no opencv_java in java.library.path
参考記事
以下のプログラムを実行。
opencvtest2.java
, sample.png
は、app/src/main/java/com/opencvtest2
以下に配置している。
package com.opencvtest2; // ★適宜自分のパッケージ名に変更
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
import org.opencv.core.Core;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
//import org.opencv.core.opencv_imgcodecs.*;
public class opencvtest2 {
public static void main(String[] args) {
// 正しく読み込まれない場合は、絶対パスに変更する
String imageFilePath = "sample.png";
//Loading the OpenCV core library
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// 画像を読み込む
Imgcodecs imageCodecs = new Imgcodecs();
Mat image = imageCodecs.imread(imageFilePath);
// 画像の幅と高さを取得
int width = image.cols();
int height = image.rows();
Size size = image.size();
System.out.println("Width: " + width + ", Height: " + height);
System.out.println("size: " + size);
}
}
すると、以下のエラーが発生。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java3 in java.library.path
これは、app/libs
に、opencvのdllファイルが無いために発生した模様。
そこで、opencv 3.4.4のWindows用exeファイルを下記からダウンロードし、
opencv/build/java/x64/opencv_java344.dll
をandroid studioで開いているプロジェクトのOpenCVTest2/app/libs
に移動する。
これで、ビルドし、実行するとうまくいった。
もし、これでうまく行かない場合は、System.load("opencv_java344.dllまでの絶対パス")
を使用するとよい。
例えば、以下のように使用する。
public static void main(String[] args) {
String imageFilePath = "sample.png";
//Loading the OpenCV core library
// System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
//絶対パスは適宜変更すること
System.load("C:\Users\hoge\OpenCVTest2\app\libs\opencv_java344.dll");