0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Android StudioにOpen CVを入れる

Last updated at Posted at 2023-08-04

プロジェクトの作成

上記のサイトに沿って、プロジェクトを作成し、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とする。

スクリーンショット 2023-08-04 15.48.35.png

OpenCVTest2/build.gradle
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を削除する。

スクリーンショット 2023-08-04 16.14.06.png

project structureのAll modulesと、appに、opencvが含まれているか確認する。

スクリーンショット 2023-08-04 16.10.19.png

ビルドすると以下のエラーが発生した。

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" />-->

スクリーンショット 2023-08-04 16.11.19.png

no opencv_java in java.library.path

参考記事

以下のプログラムを実行。
opencvtest2.java, sample.pngは、app/src/main/java/com/opencvtest2以下に配置している。

opencvtest2.java
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までの絶対パス")を使用するとよい。
例えば、以下のように使用する。

opencvtest2.java
    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");

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?