Enseñanza de la mano Configuración y uso de OpenCV-android-sdk, el aprendizaje no contará a medida que pierda

OpenCV es la abreviatura de Open Source Computer Vision Library, escrita principalmente por algunos hermanos mayores de Intel Corporation, la función es proporcionar una gran cantidad de bibliotecas de procesamiento de gráficos y gráficos (visión por computadora) y proporcionar iOS y Android SDK, porque mi trabajo principal es con la cámara Está relacionado con la integración de algoritmos, por lo que esta herramienta se usa a menudo, y el uso y la configuración del SDK de Android se registran aquí

Descarga de OpenCV-android-sdk

Dirección de descarga (sitio web oficial): https://opencv.org/releases.html La
última versión es 4.0.0 beta, descargamos la versión estable 3.4.3, hacemos clic directamente en el paquete de Android para descargar y descomprimir después de la descarga.

Importar Java SDK a Android Studio

  1. Después de abrir Android Studio, cree un nuevo proyecto OpencvDemo. Después de crearlo, haga clic en
    Archivo-> Nuevo- > Importar módulo, como se muestra en la figura:

  1. En la ventana que se abre, seleccione el directorio sdk en la carpeta Opencv-android-sdk, como se muestra en la figura:

imagen

Denomine el nombre del módulo opencvSdk y haga clic en Finalizar.

  1. Durante el proceso de importación, Android Studio generará un error en la configuración de sdkVersion en el Manifiesto . Necesitamos eliminar directamente minSdkVersion y targetSdkVersion de AndroidManifest.xml en opencvSdk. La razón es que la configuración de sdkVersion ahora se coloca en el archivo de configuración de gradle, elimine los usos-sdk, como se muestra en la figura Mostrar:

  1. Cambie la configuración relevante de build.gradle sobre android sdk en opencvSdk para que sea la misma que el proyecto actual, solo modifique compileSdkVersion minSdkVersion y targeSdkVersion, si se muestra:

  1. Vuelva a compilar después de realizar cambios, la importación de OpenCV se completa y el siguiente paso es usarla en nuestro propio proyecto.

Use Gaussian Blur en Opencv

A continuación escribimos una demostración OpenCV para usar el desenfoque gaussiano, primer complemento en nuestra opencvSdk proyecto, ya que la dependencia de la importación, añadiendo build.gradle en implementation project(':opencvSdk')como se muestra:

Escribir demostración, el método es un ImageView para mostrar una imagen clara, después de hacer clic en el botón, la imagen es borrosa gaussiana y se vuelve a mostrar, el código de desenfoque gaussiano es el siguiente:

import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;
//部分代码省略
public class MainActivity extends AppCompatActivity {

    private ImageView mImageView;
    // opencv相关功能实现所需要的so库
    static {
        System.loadLibrary("opencv_java3");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mImageView = findViewById(R.id.iv_image);
        final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_bg);
        mImageView.setImageBitmap(bitmap);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                blurImage(bitmap);
                mImageView.setImageBitmap(bitmap);
            }
        });
    }
    //传入任意bitmap, 返回模糊过后的bitmap
    private Bitmap blurImage(Bitmap origin) {
        Mat mat = new Mat();
        Utils.bitmapToMat(origin, mat);
        Imgproc.GaussianBlur(mat, mat, new Size(15, 15), 0);
        Utils.matToBitmap(mat, origin);
        return origin;
    }
}

Haga clic en el botón varias veces para hacer que la imagen sea cada vez más borrosa, la imagen del efecto:

Explicación

  • Como puede ver en la demostración anterior, se llama System.loadLibrary("opencv_java3");. De hecho, las funciones centrales de OpenCV se implementan a través de C ++. Android SDK básicamente encapsula la llamada de JNI, por lo que la biblioteca central debe cargarse en tiempo de ejecución libopencv_java3.so. La ubicación de la biblioteca está OpenCV-android-sdk\sdk\native\libsen este directorio. hay múltiples CPU biblioteca de la arquitectura de algoritmos, todo lo anterior bibliotecas predeterminadas de demostración se empaquetan en el apk, apk tras volumen recopilatorio será de aproximadamente 80 millones, pero normalmente sólo necesitan armeabi-v7a 和 arm64-v8alas bibliotecas de estos dos directorios, porque ahora el lado del teléfono Casi todas las CPU son de arquitectura ARM.

  • Sobre OpencvManager, OpencvManager un lanzamiento oficial de la aplicación, OpencvManager es una aplicación separada, después de la instalación, no necesitamos para empacar nuestra libopencv_java3.so en el apk simplemente mediante OpenCVLoader.initAsync()el método de inicialización puede ser equivalente a la correspondiente La biblioteca de algoritmos se empaqueta por separado en otra aplicación, que puede reducir el tamaño del apk, pero este método es realmente poco práctico, por lo que pocas personas lo usan.

Como se puede ver en el SDK que usa OpenCV Java arriba, es muy simple de usar, pero el mayor problema es que aumentará el tamaño del apk. Como solo usamos algunas de estas funciones, tenemos que empaquetar toda la biblioteca de algoritmos en el apk. ¿Hay alguna otra? ¿Se puede reducir el volumen del apk? La
respuesta es sí. En el siguiente artículo, explicaré cómo llamar al SDK de OpenCV a través de JNI sin usar el SDK de Java, y minimizar el volumen ocupado por el apk.

Observaciones: entorno de prueba Android Studio 3.2.1 compileSdkVersion 28 Android 8.1

El artículo no es fácil, si te gusta este artículo, o te resulta útil, espero que a todos les guste y lo reenvíen. El artículo se actualizará continuamente. ¡Productos absolutamente secos! ! !

Publicado 34 artículos originales · Me gusta1 · Visitas 756

Supongo que te gusta

Origin blog.csdn.net/Android725/article/details/105301542
Recomendado
Clasificación