Introdução a processamento de imagens com Linguagem Python – Parte 1

Biblioteca OpenCV – Linguagem Python


1 – Conhecendo a biblioteca
OpenCV (Open Source Computer Vision Library) é uma biblioteca de código aberto escrita nativamente em C++, mas que possui interfaces para Python, Java e MATLAB. Ela foi desenvolvida pela Intel com objetivo de fornecer uma infraestrutura otimizada para aplicações de visão computacional e aprendizado de máquina. Entre seu uso em aplicações pode-se destacar a detecção e reconhecimento facial, rastreamento de objetos em movimento e busca de imagens semelhantes em banco de dados de imagens.

Os exemplos apresentados no decorrer do documento foram feitos utilizando um sistema operacional baseado em Linux, mas a biblioteca possui suporte também Windows, Android e Mac OS.


2 – Configurando o ambiente
Você pode verificar se já possui uma versão do Python instalada com um dos seguintes comandos:


Caso não haja uma versão instalada, você pode instalar utilizando o seguinte comando:


Instale também a biblioteca Numpy, pois o OpenCV faz uso dela.


Agora será necessário instalar a biblioteca do OpenCV, utilize o seguinte comando:


Por fim, verifique a versão do OpenCV que está instalada através do Python:


3 – Manipulando imagens
3.1 – Funções básicas
As funções mais básicas são de ler, exibir e escrever que são executadas pelas funções a seguir, respectivamente:

  • cv2.imread 
  • cv2.imshow 
  • cv2.imwrite 

Abaixo segue trecho de código com uso das 3 funções:

A biblioteca também permite que você desenhe formas geométricas comuns através de suas funções internas:

  • cv2.line 
  • cv2.circle 
  • cv2.rectangle 
  • cv2.ellipse 

No exemplo a seguir vamos criar uma imagem preta utilizando uma matriz numpy com dimensões 256X256X3, onde os dois primeiros valores indicam as dimensões da imagem e o último o número de canais de cor. Há uma curiosidade que o OpenCV usa padrão BGR e não RGB como estamos acostumados.

Seguindo com o código, vamos desenhar uma linha verde de 3 pixels no topo da imagem com afastamento de 10 posições do topo de laterais.


Agora vamos desenhar um retângulo azul com bordas de 3 pixels logo 10 posições abaixo da linha criada anteriormente e 10 posições acima do fundo da imagem. 


Incluiremos também um círculo vermelho na lateral direita e esquerda do retângulo com raio de 8 pixels.


Para finalizar este exemplo, vamos incluir a elipse magenta com 5 pixels de borda e rotacionada em 45° dentro do retângulo e salvar a imagem.


Abaixo podemos ver a imagem que resultou do código:


3.2 – Fontes
O OpenCV também permite que adicionemos texto em imagem através da função cv2.putText e utiliza-se da coleção de fontes Hershey para escrita. Aqui está a lista das fontes que podem ser usadas:

  • cv2.FONT_HERSHEY_SIMPLEX
  • cv2.FONT_HERSHEY_PLAIN
  • cv2.FONT_HERSHEY_DUPLEX
  • cv2.FONT_HERSHEY_COMPLEX
  • cv2.FONT_HERSHEY_TRIPLEX
  • cv2.FONT_HERSHEY_COMPLEX_SMALL
  • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
  • cv2.FONT_HERSHEY_SCRIPT_COMPLEX
  • cv2.FONT_ITALIC

Neste código de exemplo vamos gerar uma imagem com duas fontes de texto de diferentes:

Obtemos a seguinte imagem como resultado:


3.3 – Formas geométricas complexas
Há a possibilidade de combinar as bibliotecas Numpy e OpenCV para gerar imagens com geometrias mais complexas como outros tipos como gráficos, contorno de mapas e etc. No próximo exemplo, vamos utilizar a função cv2.polylines para conectar pontos dentro da matriz e desenhar uma nova forma.

A seguir a imagem resultante:


4 – Discussão Geral
Nesse documento conhecemos a biblioteca OpenCV, aprendemos a configurá-la e utilizamos algumas de suas funções básicas para darmos os primeiros passos na manipulação de imagens. Essa biblioteca é enorme e possui outros módulos de edição de imagens como a aplicação de filtros, compressão de imagens, visualização e comparação de histogramas que poderemos ver no nosso próximo conteúdo sobre o assunto.


Referências

[1] __, OpenCV website, https://docs.opencv.org/4.x/

[2] __, Python Brasil website, https://docs.python.org/pt-br/3.11/tutorial/

[3] __, Numpy website, https://numpy.org/doc/stable/reference/index.html


Por: Magna Vitaliano

Compartilhar:

Facebook
Twitter
LinkedIn
Pinterest
Artigos Geplant

Protocolo para Coleta de Solos

Por José Henrique Tertulino Rocha e Caroline Ferreira  A coleta de solos é uma etapa essencial no momento de planejamento de plantio e uso da

Leia mais »
Artigos Geplant

Powerpoint e R Studio

Por Caroline Ferreira – Analista Florestal da Geplant    Introdução  A linguagem R é uma poderosa linguagem de programação e ambiente de desenvolvimento estatístico amplamente utilizada

Leia mais »