Skip to content

Latest commit

 

History

History
439 lines (301 loc) · 11 KB

README-es.md

File metadata and controls

439 lines (301 loc) · 11 KB

OpenCV_4

Este paquete contiene la implementación de módulos OpenCV, la versión utilizada es 4.3.0 tanto para plataformas Android como iOS.


Platform Nullsafety Pub Package
License: BSD-3-Clause Donate


Tabla de contenido

Acerca de esta versión

Compatibilidad

  • Esta desarrollada para la integración la librería de visión artificial OpenCV en su versión 4.3.0

  • Es compatible con Android e iOS.

  • Se tuvo en cuenta la integración sencilla con paquetes populares de flutter como image_picker para procesar imágenes de la galería o la camara, puedes ver el ejemplo de implementación aquí, en este caso necesitas configurar tu proyecto con Nullsafety..

  • Los módulos de OpenCV empleados son los siguientes:

    • Image Processing
      • Image Filtering
        • bilateralFilter
        • blur
        • boxFilter
        • dilate
        • erode
        • filter2D
        • gaussianBlur
        • laplacian
        • medianBlur
        • morphologyEx
        • pyrDown
        • pyrMeanShiftFiltering
        • pyrUp
        • scharr
        • sobel
        • sqrBoxFilter
      • Miscellaneous Image Transformations
        • adaptiveThreshold
        • distanceTransform
        • threshold
      • Color Space Conversions
        • cvtColor
      • ColorMaps in OpenCV
        • applyColorMap

Procesamiento

  • Todos los procesamientos son a través del path de la imagen.
  • Imágenes en flutter a travez de la carpeta asset configurada. Default
  • Imágenes en la web.
  • Imágenes de la galería o camara usando image_picker

Sintaxis

  • Parecida a Phyton para llamada a métodos y constantes de procesamiento de imagen por ejemplo
    • Cv2.ctvColor
    • Cv2.COLOR_BGR2GRAY

Instalando

1. Dependencias

Agregue esto al archivo pubspec.yaml de su paquete:

dependencies:
  opencv_4: ^1.0.0

2. Instalar

Puede instalar paquetes desde la línea de comandos:

$ flutter pub get

3. Importar el paquete

Ahora en su código Dart, puede usar:

import 'package:opencv_4/opencv_4.dart';

Cómo utilizar

Pre requisitos

  1. Android: requiere la mínima versión 21 en el proyecto android (folder) -> app (folder) -> build.gradle
defaultConfig {
    ...
    minSdkVersion 21
    ...
}
  1. Si se va a trabajar con el path de assets flutter no requiere permisos ni en Android e iOS.
  2. Si se desea trabajar con imágenes de la web no requiere configuración.
  3. Si se va a utilizar el paquete image_picker para trabajar con imágenes de la camara y galería, seguir su configuración de permisos para Android e iOS.
  4. Nullsafety si vas a utilizar el ejemplo debes configurar el archivo pubspect.yaml
environment:
  sdk: ">=2.12.0 <3.0.0"

Classes

Cv2: Clase que contiene la implementación de módulos y constantes de OpenCV

CVPathFrom: Permite configurar la ruta para procesar las imágenes.

  • URL (static constant) configurar opencv para imágenes web
  • GALLERY_CAMERA (static constant) configurar opencv para las imágenes obtenidas de la galeria o camara
  • ASSETS (static constant) configurar opencv para imágenes de flutter en pubspect.yaml -> assets/test.jpg

Módulo: Image Filtering

Imagen original

from my behance acount

Algunos ejemplos

Bilateral Filter

Debe ser llamado dentro de una función async

Uint8List _byte = await Cv2.bilateralFilter(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        diameter: 20,
        sigmaColor: 75,
        sigmaSpace: 75,
        borderType: Cv2.BORDER_DEFAULT,
      );

      setState(() {
        _byte;
      });

Mostrar resultado en un widget Image

Image.memory(
      _byte,
      width: 300,
      height: 300,
      fit: BoxFit.fill,
    )

Nota: Si quieres procesar una imagen de la web debes configurar pathFrom: CVPathFrom.URL remplazar en pathString por una URL por ejemplo. pathString: 'https://mir-s3-cdn-cf.behance.net/project_modules/fs/313f8e114930481.6044f05fcd866.jpeg'

Dilate

Uint8List _byte = await Cv2.dilate(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        kernelSize: [3, 3],
      );

      setState(() {
        _byte;
      });



Filter2D

Uint8List _byte = await Cv2.filter2D(
        pathFrom: CVPathFrom.URL,
        pathString:
          'https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/634dba114930481.6044f05fcb2dd.jpeg',
        outputDepth: -1,
        kernelSize: [2, 2],
      );

      setState(() {
        _byte;
      });

Median Blur

Uint8List _byte = await Cv2.medianBlur(
        pathFrom: CVPathFrom.URL,
        pathString:
          'https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/16fe9f114930481.6044f05fca574.jpeg',
        kernelSize: 19,
      );

      setState(() {
        _byte;
      });

MorphologyEx

Uint8List _byte = await Cv2.morphologyEx(
        pathFrom: CVPathFrom.URL,
        pathString:
          'https://mir-s3-cdn-cf.behance.net/project_modules/fs/c7da51114930481.6044f05fcc76a.jpeg',
        operation: Cv2.MORPH_TOPHAT,
        kernelSize: [5, 5],
      );

      setState(() {
        _byte;
      });

PyrMeanShiftFiltering

Uint8List _byte = await Cv2.pyrMeanShiftFiltering(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        spatialWindowRadius: 20,
        colorWindowRadius: 20,
      );

      setState(() {
        _byte;
      });

Scharr

Uint8List _byte = await Cv2.scharr(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        depth: Cv2.CV_SCHARR,
        dx: 0,
        dy: 1,
      );

      setState(() {
        _byte;
      });

Módulo: Color Space Conversions

CvtColor

Uint8List _byte = await Cv2.cvtColor(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        outputType: Cv2.COLOR_BGR2GRAY,
      );

      setState(() {
        _byte;
      });

Módulo: Color Maps

ApplyColorMap

Uint8List _byte = await Cv2.applyColorMap(
        pathFrom: CVPathFrom.URL,
        pathString:
          'https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/16fe9f114930481.6044f05fca574.jpeg',
        colorMap: Cv2.COLORMAP_JET,
      );

      setState(() {
        _byte;
      });

Módulo: Miscellaneous Image Transformations

Threshold

Uint8List _byte = await Cv2.threshold(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        thresholdValue: 150,
        maxThresholdValue: 200,
        thresholdType: Cv2.THRESH_BINARY,
      );

      setState(() {
        _byte;
      });

AdaptiveThreshold

Uint8List _byte = await Cv2.adaptiveThreshold(
        pathFrom: CVPathFrom.ASSETS,
        pathString: 'assets/Test.JPG',
        maxValue: 125,
        adaptiveMethod: Cv2.ADAPTIVE_THRESH_MEAN_C,
        thresholdType: Cv2.THRESH_BINARY,
        blockSize: 11,
        constantValue: 12,
      );

      setState(() {
        _byte;
      });

Errores o solicitudes

Puedes escribir solicitudes de módulos y errores en issue tracker.

Donar

Para darte una mejor solución...

ko-fi

  • BTC: bc1qhy5uer94d4xvp2wgtfg5l6s6jk8gwj6d0ufqvh
  • BNB: bnb17z7dqeeyrkhq2l9mx6p3hg6ewvshrpkqqzcpr9
  • ETH: 0xb76D1F1f97eBf5B2096D5449cB3DDD2096CCB4b3