P.D.I. em PYthon
Bem-vindo Nesta disciplina vamos trabalhar dentro do ambiente GOOGLE COLAB para escrever pequenos programas em PYTHON destinados a manipular imagens. PYTHON é uma linguagem de programação, como C++, que tem várias bibliotecas que devem ser incluídas para determinadas finalidades. Fazendo uma analogia, é equivalente a incluir bibliotecas em C++ com o comando "include"
A seguir tem um trecho de programa que inclui algumas bibliotecas básicas que usaremos no curso. Isto é feito usando o comando import. ex:
import numpy
Inclui a biblioteca básica de processamento de dados científicos. Esta biblioteca tem funções matemáticas muito úteis, como trigonométricas, logaritmos, ou operação de matrizes. Vale a pena dar uma olhada na descrição. Consulte "https://numpy.org/doc/stable/user/whatisnumpy.html"
Você também pode usar a opção:
import numpy as np
Neste caso, você importa a biblioteca numpy mas, em lugar de chamar os comando usando o nome numpy você pode usar um nome mais curto, como np. Isto faz sentido se o nome da biblioteca for muito extenso.
import matplotlib.pylab as plt
inclui uma biblioteca que permite plotar figuras e imagens na tela. É muito útil para nossa disciplina.
Para rodar este trecho de programa use a tecla play (triângulo). Após uns segundos aparece um sinal verde mostrando que deu certo. SE ocorreu um erro, um texto em vermelho aparece a seguir.
import matplotlib.pylab as plt
X=np.zeros(tam,dtype = float)
Y=np.zeros(tam,dtype = float)
print(tam)
print(X)
Podemos também usar ul LOOP, usando o comando for, para repetir alguma série de comandos. A sintaxe é:
for i in range(tam):
isto cria um loop variando a variável "i" de 0 até tam-1. Em nosso caso 0-99. Vamos ver se funciona? Não esqueça do : (dois pontods) no final desta linha.
Tudo o que for repetido neste loop deve ser deslocado para direita (TAB) para mostrar o escopo do loop.
print(i)
Finalmente, plotamos estes pontos. Para isto usamos a biblioteca matplotlib, que nós importamos como plt.
Esta biblioteca oferece o comando plot(). Mas, em PYTHON você constrói primeiro o gráfico e depois pede para mostrar.
X[i]=i*i
Y[i]=1/(i+1)
plt.plot(X,Y )
plt.show()
Podemos juntar tudo em um unico script e incluir uns comentarios com #:
Vamos criar uma matriz 10x10 cheia de zeros e alterar o valor de algumas células para 255...
Como uma imagem é uma matriz, então, podemos ver a matriz como imagem usando a função imshow().
Em um novo programa
Agora, você pode desenhar uma carinha sorridente e mostrar como imagem?
Pode começar criando uma matriz vazia.
Depois, altere o valor de alguns pixels para fazer a "arte"
Aqui voce aprende:
como sempre, importe as bibliotecas básicas.
A função io da biblioteca skimage permite ler uma imagem da WEB, especificando o endereço. Você pode tentar depois com outras imagens. Agora, se concentre neste exemplo.
Ler a imagem
Agora, criamos uma imagem vazia com o mesmo tamanho da anteriormente lida, porém com apenas uma banda.
OBS: como para calcular a media devemos somar os valores dos pixels em três bandas, a soma pode eventualmente ser maior que 255 (o máximo para 8 bits UINT8) por isso, vamos trabalhar com a imagem em float.
calcular a média de cada pixel considerando as três bandas:
Finalmente, você pode usar o Google Drive para ler e armazenar imagens.
para isto, crie uma pasta "fotos" no seu google drive e armazene nela uma imagem colorida de sua preferência.
Para ler a imagem, deve usar uma biblioteca específica para ler e salvar no drive.
A biblioteca google.colab DRIVE.
Depois, monte o drive como uma pasta, com MOUNT
import matplotlib.pylab as plt
tam=100 # definir o tamanho das series
X=np.zeros(tam,dtype = float)
Y=np.zeros(tam,dtype = float)
print(tam)
# criar os valores
for i in range(tam):
X[i]=i*i
Y[i]=1/(i+1)
# plotar resultado
plt.plot(X,Y )
plt.show()
parte 2
import matplotlib.pylab as plt
tam=100 # definir o tamanho da grade
X=np.zeros([10,10],dtype = float)
X[2,2]=255
X[5,5]=255
X[4, 8]=255
print(X)
# mostrar como imagem
plt.imshow(X)
plt.show()
PARTE 3: ler uma imagem da WEB
import cv2 as cv
import numpy as np
from google.colab.patches import cv2_imshow
Após ler a imagem, podemos ler seu tamanho usando o comando SHAPE.
Finalmente, podemos visualizar a imagem usando o comando imshow da biblioteca CV2.
url="https://docs.ufpr.br/~centeno/m_pdi/exepy/imagens/crops_RGB.tif"
I = io.imread(url)
nl,nc, nb= I.shape
print(nl, nc, 'numero de bandas',nb)
cv2_imshow(I)
for j in range( nc):
b1=float(I[i,j,0])
b2=float(I[i,j,1])
b3=float(I[i,j,2])
S[i,j]= np.uint8 ( (b1+b2+b3)/3 )
cv2_imshow(S)
parte 4: usar o drive
import matplotlib.pylab as plt
from google.colab.patches import cv2_imshow # para mostrar a imagem
from skimage import io
# para salvar no drive
from google.colab import drive
drive.mount('/content/gdrive')
nome="/content/drive/My Drive/fotos/test.jpw" # le uma das imagens com nome test.img. Cuidado,com o uso de maiúsculas.
imgRGB = cv2.imread(nome) # ler imagem deste endereço
# salvar como nova imagem
io.imsave('/content/gdrive/My Drive/fotos/saida.tif', imgRGB)