Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem...

13
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

Transcript of Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem...

Page 1: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 2: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

Roteiro• Python e OpenCV

• Ler Imagem

• Mostrar imagem

• Parâmetros

• Exercícios

2

Page 3: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 4: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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:

Page 5: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

Entrada na linha de comando

C:\teste\python TesteArgsImage.py –i Linux.jpg

5

Page 6: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 7: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 8: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 9: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 10: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 11: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 12: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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

Page 13: Processamento e Análise de Imagens - PUC-SPjarakaki/pai/Roteiro4.pdf · import cv2 #Le uma imagem img = cv2.imread('arteriografia_2391479.jpg') #AlunosPUC_Oracle.jpg')#, cv2.IMREAD_GRAYSCALE

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