Lendo e exibindo imagens com OpenCV

Esse é o primeiro post de uma série sobre OpenCV, matplotlib e numpy, nele você vai aprender a ler e exibir corretamente uma imagem.

Funções abordadas: cv2.imread() e cv2.imshow()

Lendo imagens com OpenCV

A função utilizada para ler imagens com o OpenCV é a imread().

A função espera o argumento do caminho e opcionamente o modo de leitura dos canais.

cv2.imread(filename[, flags])

Atenção ao caminho das imagens, uma vez que a função não irá retornar um erro caso a imagem não esteja disponível!

A função retorna um objeto numpy.ndarray caso consiga carregar corretamente uma imagem e None em caso de falha.

O retorno dos canais da imagem será sempre BGR Blue, Green, Red. É preciso utilizar cvtColor() para converter em RGB.

Flags

Opcionamente você pode utilizar:

  • cv2.IMREAD_COLOR : Carrega apenas os canais de cor da imagem. O canal de alpha é ignorado. Esse é o valor padrão.
  • cv2.IMREAD_GRAYSCALE : Carrega a imagem em escala de cinza.
  • cv2.IMREAD_UNCHANGED : Carrega a imagem e o canal de alpha.

No lugar das flags, você pode utilizar 1, 0 ou -1 respectivamente.

Exemplo:

import numpy as np
import cv2

# Carrega a imagem em escala de cinza
img = cv2.imread('messi5.jpg',0)

Exibindo imagens com OpenCV

Para exibir imagens com OpenCV utilize imshow(). A janela é ajustada automaticamente para o tamanho da imagem.

A função recebe dois argumentos, o nome da janela e a imagem a ser exibida. Você pode criar inumeras janelas porém, os nomes devem ser diferentes.

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

imshow PrintScreen

waitKey(0) irá aguardar por uma tecla a ser pressionada, posteriormente destroyAllWindows() irá fechar a janela.

Em um outro post falaremos mais sobre essas 2 funções e em um post futuro, também iremos abordar como utilizar a biblioteca Matplotlib para exibir imagens com controles adicionais. Até lá!

Data de publicação: 07-11-2018