Skip to content

Latest commit

 

History

History
441 lines (302 loc) · 11 KB

README-pt.md

File metadata and controls

441 lines (302 loc) · 11 KB

opencv_4

Esta biblioteca contém a implementação de módulos OpenCV, a versão utilizada é 4.3.0 para plataformas Android e iOS.


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


Tabla de contenido

Sobre este lançamento

Compatibilidade

  • Foi desenvolvido para a integração da biblioteca de visão artificial OpenCV em sua versão 4.3.50

  • É compatível com Android e iOS.

  • A integração simples com bibliotecas de flutter populares como image_picker foi levada em consideração para processar imagens da galeria ou câmera, você pode ver o exemplo de implementação aqui, neste caso você precisa configurar seu projeto com Nullsafety.

  • Os módulos OpenCV usados ​​são os seguintes:

    • 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

Processamento de imagem

  • Todo o processamento é feito através do path da imagem
  • Imagens no flutter por meio do diretório de assets configurado. Default
  • Imagens na web.
  • Imagens da galeria ou câmera usando image_picker

Sintaxe

  • Semelhante ao Python para chamar métodos e constantes de processamento de imagem, por exemplo
    • Cv2.ctvColor
    • Cv2.COLOR_BGR2GRAY

Instalando

1. Dependências

Adicione isso ao arquivo pubspec.yaml do seu projeto:

dependencies:
  opencv_4: ^1.0.0

2. Instalar

Você pode instalar bibliotecas a partir da linha de comando:

$ flutter pub get

3. Importe o bibliotecas

Agora em seu código Dart, você pode usar:

import 'package:opencv_4/opencv_4.dart';

Como usar

Pré requisitos

  1. Android: requer a versão mínima 21 no projeto android (folder) -> app (folder) -> build.gradle
defaultConfig {
    ...
    minSdkVersion 21
    ...
}
  1. Se você vai trabalhar com o path de assets flutter, não requer permissões no Android e iOS.
  2. Se você deseja trabalhar com imagens da web, nenhuma configuração é necessária.
  3. Se a biblioteca image_picker for usada para trabalhar com imagens da câmera e da galeria, siga as configurações de permissão para Android e iOS.
  4. Nullsafety se você vai usar o exemplo você deve configurar pubspect.yaml
environment:
  sdk: ">=2.12.0 <3.0.0"

Classes

Cv2: Classe que contém a implementação de módulos e constantes OpenCV

CVPathFrom: Permite que você configure o path para processar as imagens.

  • URL (static constant) configurar opencv para imagens da web
  • GALLERY_CAMERA (static constant) configurar o opencv para as imagens obtidas na galeria ou câmera
  • ASSETS (static constant) configurar opencv para imagens flutter em pubspect.yaml -> assets/test.jpg

Módulo: Image Filtering

Imagem original

from my behance acount

Alguns exemplos

Bilateral Filter

Deve ser chamado em uma função async

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

      setState(() {
        _byte;
      });

Mostrar resultado no widget Image

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

Nota: Se você deseja processar uma imagem da web, você deve configurar pathFrom: CVPathFrom.URL substituir em pathString por um url. 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

Você pode escrever solicitações de módulo e erros em issue tracker.

Donar

Para te dar uma solução melhor...

ko-fi

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