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