Você está na página 1de 6

Centro Universitário Facens

Disciplina: Processamento de Imagens


Prof. Renato Moraes Silva

Exercício - Introdução à bilioteca OpenCV


Neste exercício, são apresentados alguns recursos básicos da biblioteca OpenCV.
Para instalar a biblioteca OpenCV no sistema operacional Ubuntu, use o comando sudo
apt-get install python3-opencv.

Além disso, é preciso instalar a biblioteca no Python, por meio do comando pip install
opencv-python.

Abaixo, iremos importar as bibliotecas que serão usadas.


# -*- coding: utf-8 -*-

import cv2
import numpy as np
import os
import urllib.request
import matplotlib.pyplot as plt # para plotar as imagens

Importanto uma imagem em tons de cinza


Primeiro, iremos fazer o download de uma imagem.
pathFolder = 'figs/'

# verifica que a pasta existe


if not os.path.exists(pathFolder):
# cria a pasta
os.makedirs(pathFolder)

url = 'https://i.dailymail.co.uk/i/pix/2012/06/22/article-2163232-
13BB4A21000005DC-80_634x472.jpg'

urllib.request.urlretrieve(url, pathFolder + "gatoVaca.png")

----------------------------------------------------------------------
-----
NameError Traceback (most recent call
last)
/tmp/ipykernel_57376/1483489115.py in <module>
2
3 # verifica que a pasta existe
----> 4 if not os.path.exists(pathFolder):
5 # cria a pasta
6 os.makedirs(pathFolder)

NameError: name 'os' is not defined

Iremos importar a imagem da pasta figs em tons de cinza. Para isso, é necessário usar a
função imread, passando o path da imagem e 0 como argumento.
imagem = cv2.imread('figs/gatoVaca.png', 0)

print('Dimensao: ', imagem.shape)

print('Pixel 0,0: ', imagem[0,0])

Dimensao: (472, 634)


Pixel 0,0: 20

Para mostrar a imagem na tela, podemos usar a função imshow() da biblioteca OpenCV.
E devemos acrescentar também:
cv2.waitKey(0) # espera até que um tecla seja pressionada
cv2.destroyAllWindows() # destrói a janela onde a imagem está sendo
exibida

No entanto, exibir a imagem usando OpenCV pode travar o notebook. Portanto, é melhor
usar a função imgshow da biblioteca matplotlib, passando 'gray', vmin=0 e vmax=255 como
argumentos.
plt.imshow(imagem,
'gray',
vmin=0,
vmax=255)
plt.show()
Importanto uma imagem em BGR
Agora, iremos importar uma imagem da pasta figs usando cores. É importante notar que a
biblioteca OpenCV importa as imagens com o formato BGR. Portanto, para algumas tarefas
será necessário converter para RGB, por meio da função cvtColor, usando o argumento
cv2.COLOR_BGR2RGB.
imagem = cv2.imread('figs/gatoVaca.png')

# converte BGR para RGB


imagem = cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB)

print('Dimensão:', imagem.shape)

print('Pixel 0,0: ',imagem[0,0])

Dimensão: (472, 634, 3)


Pixel 0,0: [21 20 16]

Agora, iremos mostrar a imagem na tela usando a função imshow da biblioteca matplotlib
plt.imshow(imagem)
plt.show()
Vamos modificar a imagem acima, adicionando um retângulo preto de 5x5 pixels a cada 20
pixels.
imagem2 = imagem.copy()

tam = 5
cor = [125,3,30]

# passa por todas as linhas de 15 em 15


for i in range( 0, imagem2.shape[0], 15 ):
for j in range( 0, imagem2.shape[1], 15 ):

imagem2[i:i+tam, j:j+tam, :] = cor

plt.imshow(imagem2)
plt.show()

# salvar a imagem no computador


cv2.imwrite( 'figs/gatoVaca_quadriculado.png',
imagem2)
True

A biblioteca OpenCV também permite salvar uma imagem em arquivo, usando qualquer
formato desejado. Para isso, basta usar a função imwrite, passando o path da imagem,
seguido pela variável que contém a imagem.
Abaixo, salve a imagem com o nome gatoVaca_copia.jpg.

É possível também inserir texto nas imagens usando a função putText que possui os
seguintes parâmetros:
• img: imagem
• text: texto desejado
• org: coordenadas no formato (x,y) onde o texto deve ser inserido
• fontFace: o tipo de fonte. Exemplos: FONT_HERSHEY_SIMPLEX,
FONT_HERSHEY_PLAIN, FONT_HERSHEY_DUPLEX, etc
• fontScale: inteiro que indica a escala da fonte e é usado para aumentar ou diminuir
a fonte
• thickness (opcional): espessura das linha
• lineType (opcional): tipo de linha. Opções: FILLED, LINE_4, LINE_8, LINE_AA
• bottomLeftOrigin (opcional): o valor False mantém o texto normal, enquanto que o
True, inverte o texto

Exercícios
Ex. 1. Use a imagem em tons de cinza e acrescente uma borda preta ao redor dela usando
operações matriciais por meio da biblioteca NumPy.
Salve a imagem resultante com o nome gatoVaca_borda.png no pasta figs.

Ex. 2. Usando a imagem em tons de cinza, crie uma nova imagem com zoom na cabeça da
vaca. Isto é, recorte a imagem para que sobre apenas a região onde está a cabeça da vaca.
Salve a imagem resultante com o nome gatoVaca_zoom.png no pasta figs.

Você também pode gostar