OpenCV com python. Estudando a Documentação da biblioteca - GabrielSiron/OpenCV-com-Python GitHub Wiki

Trabalhando com imagens estáticas

O objetivo aqui é aprender a usar as ferramentas iniciais da biblioteca OpenCV (biblioteca utilizada para desenvolver códigos com Visão Computacional). Vamos começar do básico, ler uma imagem estática. E, para isso, utilizaremos a função imread().

cv2.imread()

Essa função é usada para ler imagens. Ela recebe dois argumentos:

  1. o diretório onde a imagem se encontra, que é o endereço onde sua imagem está alocada (algo como C:\Users\Downloads...).
  2. o modo de leitura da imagem.

O segundo argumento é o mais complexo. Basicamente, existem três possibilidades de argumentos para imread(), e eles são:

  • cv2.IMREAD_COLOR. Quando passado como argumento, qualquer transparência que sua imagem possua será perdida. A imagem é carregada em BGR (padrão de cor da biblioteca OpenCV). [cv2.IMREAD_COLOR equivale a 1]
  • cv2.IMREAD_GRAYSCALE. Carrega a imagem em escala de cinza. [cv2.IMREAD_GRAYSCALE equivale a 0]
  • cv2.IMREAD_UNCHANGED. Carrega a imagem em BGR, mas conserva a transparência dos pixels (a imagem é carregada com um canal alfa, ou 'Alpha Channel'). [cv2.IMREAD_UNCHANGED equivale a -1]

Então, vamos ver um exemplo para isso ficar mais claro.

import cv2

#quando a imagem estiver no mesmo diretorio que seu programa
#não é necessário especificar o diretorio completo.

image_gray = cv2.imread('photo.jpg', cv2.IMREAD_GRAYSCALE)
image_color = cv2.imread('photo.jpg') #o valor padrão de leitura é cv2.IMREAD_COLOR
image_alpha = cv2.imread('photo.jpg', -1) 

cv2.imshow()

A função imshow() é utilizada para mostrar imagens na tela. Assim como a imread(), passamos apenas dois argumentos para a função, e eles são:

  • o nome que você deseja dar a janela criada (em str).
  • e a imagem, ou melhor, a variável que contém a imagem.

Veja o exemplo a seguir:

import cv2

image = cv2.imread('photo.jpg')
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Apareceram duas funções novas: waitKey() e destroyAllWindows(). São funções bem simples e vamos explicá-las agora.

cv2.waitKey()

O nome é bem sugetivo. Essa função espera, durante um intervalo de tempo, uma tecla ser pressionada. Esse tempo em contado em milissegundos. Quando o argumento passado é 0, ela espera indefinidamente alguma tecla ser pressionada. Essa espera torna possível ao usuário a visualização da imagem plotada, pois o programa executa numa escala de tempo muito baixa. Não dá pra acompanhar o computador, logo a gente precisa dar esse "delay" na execução.

cv2.destroyAllWindows()

Outro nome bastante sugestivo. Essa função "destrói" (fecha) todas as janelas que o openCV abrir. É particularmente útil no final dos códigos, quando o programa deve encerrar a execução. Se você não utilizar, as janelas continuarão abertas e você terá que fechá-las manualmente.