Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Processamento e Análise de Imagens
Sustentação Laboratorial Interativa
Prof. Julio Arakaki ([email protected])
Engenharia Biomédica
FCET - Faculdade de Ciências Exatas e Tecnologia
Roteiro• Python e OpenCV
• Ler Imagem
• Mostrar imagem
• Parâmetros
• Exercícios
2
3
import cv2
#Le uma imagem
img = cv2.imread('arteriografia_2391479.jpg')
#AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE )
#mostra na tela
cv2.imshow('image',img)
#espera pressionar uma tecla
cv2.waitKey(0)
Ler e mostrar uma imagem
4
Funções - Exemplo
def calcular_media(nota1, nota2):
return (nota1+nota2)/2
funcoes.py
import funcoes
n1 = float(input('Nota1:'))n2 = float(input('Nota1:'))
result = funcoes.calcular_media(n1, n2)
print(result)
testaFunc.py
>>>.python testaFunc.py
Rodando o script:
Entrada na linha de comando
C:\teste\python TesteArgsImage.py –i Linux.jpg
5
Entrada na linha de comandoimport argparse
import cv2
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True, help = "Path to the image")
args = vars(ap.parse_args())
image = cv2.imread(args["image"])
print ("width: {} pixels".format(image.shape[1]))
print ("height: {} pixels".format(image.shape[0]))
print ("channels: {}".format(image.shape[2]))
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.imwrite("newimage.jpg", image)
6
Entrada na linha de comandoimport cv2
arquivo = str(input('Forneça o nome do arquivo: ‘))
image = cv2.imread(arquivo)
print ("width: {} pixels".format(image.shape[1]))
print ("height: {} pixels".format(image.shape[0]))
print ("channels: {}".format(image.shape[2]))
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.imwrite("newimage.jpg", image)
7
Acesso aos pixels da imagemimport cv2
import numpy as np
# Le a imagem para uma matriz
imagem = cv2.imread("../../imagens/celulas-min.jpg")
cv2.imshow('original', imagem)
# "Pega" as propriedades.
altura,largura,bytesPorPixel = np.shape(imagem)
# percorre toda a imagem.
for py in range(0,altura):
for px in range(0,largura):
print (imagem[py][px])
8
Redimensionar uma imagem (Amostragem)...
img = cv2.imread('../../imagens/celulas-min.jpg',
cv2.IMREAD_UNCHANGED)
cv2.imshow("Imagem Original", img)
print('Dimensões Originais : ',img.shape)
scale_percent = 50 # Porcentagem em relação a imagem original
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
print('Dimensões Alteradas : ',resized.shape)
cv2.imshow("Imagem redimensionada", resized)
...
9
Redimensionar uma imagem (Amostragem)...
# Reduzindo a imagem #
# Seleciona uma em cada 2 colunas, uma a cada duas
linhas
n = 2
m = 2
img_red = img[::n,::m]
cv2.imshow('reduzida', img_red)
...
10
Redimensionar uma imagem (Amostragem)
...
# Aumentando a imagem #
# Os pixels da imagem atual serão duplicados no eixo x e y.
# np.repeat(matriz, vezes, eixo). O eixo 0 é a altura e 1 a
largura.
m = 2
img_aum = np.repeat(img_red, m, axis=0) #eixo x
img_aum = np.repeat(img_aum, m, axis=1) #eixo y
cv2.imshow('aumentada', img_aum)
...
11
Redimensionar uma imagem (Quantizacao)
...
## Quantização ##
# 255 / 31 = 8,22...
# Assim, teremos uma imagem com 8 tons de cinza.
# A conta é feita desta forma para descartar a parte decimal
dos números
# e alterar o vetor para que possua apenas 8 valores possíveis.
r = 31
imgQuant = np.uint8(img / r) * r
cv2.imshow('Quantizada', imgQuant)
...
12
Atividade em sala1. Crie um script em python que leia uma imagem
colorida pela linha de comando e caso não seja fornecido, entre o nome da imagem pelo teclado. A imagem deverá ser mostrada na tela. Ao pressionar a tecla c, deverá ser apresentado e salvar um arquivo em padrão de cinza, ao pressionar a tecla r reduz e salva e ao pressionar a tecla a, aumenta e muda o numero de bits (quantização) e salva.
Entrega: inbox da disciplina LAPI (disco Y)
https://www.pucsp.br/graduacao/ciencia-da-computacao 13