How to run OpenCV code without OpenCv Manager

前端 未结 3 1631
旧巷少年郎
旧巷少年郎 2020-11-27 16:14

I am using OpenCV4Android version 2.4.10 and i test my code on Samsung Galayx GT-I9300. the problem i have is, that i must download Opencv Manager from play store so that my

3条回答
  •  醉酒成梦
    2020-11-27 16:42

    Share to you about my way.

    1. Download opencv sdk for android at: https://opencv.org/releases.html
    2. Unzip opencv sdk
    3. In your project (ex ADVisionProject), open settings.gradle file and add config below

    --

    def opencvsdk = ''
    include ':opencv'
    project(':opencv').projectDir = new File(opencvsdk + '/sdk')
    

    Example with my settings.gradle file

    include ':app'
    
    def opencvsdk = '/Volumes/Data/Projects/machine-learning/OpenCV-android-sdk'
    include ':opencv'
    project(':opencv').projectDir = new File(opencvsdk + '/sdk')
    
    1. In app/build.gradle, add opencv module to dependencies

    --

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
       ....
        implementation project(':opencv')
    
    }
    
    1. Write some codes for testing. About below code, it read drawable image to Mat and convert color to gray mode, convert Mat to Bitmap and display Bitmap into ImageView.

    --

    import android.graphics.Bitmap;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.ImageView;
    
    import org.opencv.android.OpenCVLoader;
    import org.opencv.android.Utils;
    import org.opencv.core.CvType;
    import org.opencv.core.Mat;
    import org.opencv.core.Size;
    import org.opencv.imgproc.Imgproc;
    
    import java.io.IOException;
    
    public class MainActivity extends AppCompatActivity {
    
        static {
            OpenCVLoader.initDebug();
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ImageView imageView = findViewById(R.id.activity_main_iv_result);
            try {
                Mat img = Utils.loadResource(this, R.drawable.eye);
                Mat gryimg =  new Mat(img.size(),CvType.CV_8U);
                Imgproc.cvtColor(img, gryimg, Imgproc.COLOR_RGB2GRAY);
                Bitmap bm = Bitmap.createBitmap(gryimg.cols(), gryimg.rows(), Bitmap.Config.ARGB_8888);
                Utils.matToBitmap(gryimg, bm);
                imageView.setImageBitmap(bm);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
        }
    }
    
    1. Try to build apk and install to android device. It’s not require OpenCV manager. But I realize the apk size quite big, about 80MB initial

    Tested with opencv-3.4.1-android-sdk and Android Studio 3.1.3

    We have some way to integrate sdk to your project. You should read /sdk/build.gradle for getting more options

提交回复
热议问题