. PDI em python
A seguir, são mostradas as etapas para a visualização do histograma de uma imagem de 256 valores (8 bits) na tela do computador.
Se não a tem, copie a imagem cachorro no seu google drive.
Passos
Código em python.
import cv2
from google.colab.patches import cv2_imshow # para mostrar a imagem
from google.colab import drive
drive.mount('/content/drive') # montar o drive
# listar conteúdo da pasta, verifique se sua imagem está nessa pasta
!ls "/content/drive/My Drive/fotos"
# Ler a imagem com uma função de OpenCV
nome='/content/drive/My Drive/fotos/dog.jpg'
I = cv2.imread(nome) # ler imagem RGB deste endereço
nl,nc, nb= I.shape # Recupera o tamanho da imagem
print('tamanho', nl, nc, 'nro de bandas', nb)
cv2_imshow(I)
G = cv2.cvtColor(I, cv2.COLOR_BGR2GRAY)
# transforma imagem RGB para imagem cinza usando openCV
cv2_imshow(G)
h = [0 for x in range(256)] # aloca vetor nulo para novo histograma
# varrer imagem e, para cada posição, ler o valor e
# somar uma unidade na correspondente posição do histograma
for L in range(nl):
for C in range (nc):
v=np.uint8( np.round( G[L,C] ) ) # valor digital da posicao L,C
h[v]=h[v]+1 # soma um ao histograma nesta posicao
# ver grafico
plt.plot(h, label='histograma')
plt.show()
tente no seu computador...
Se der certo, o histograma deve ser parecido a este:
.
Afortunadamente, existe uma função em OpenCV que calcula o histograma. Podemos usar esta função e produzir uma nova versão de nosso programa
import cv2
from google.colab.patches import cv2_imshow # para mostrar a imagem
from google.colab import drive
drive.mount('/content/drive') # montar o drive
# Ler a imagem com uma função de OpenCV
nome='/content/drive/My Drive/fotos/dog.jpg'
I = cv2.imread(nome)
nl,nc, nb= I.shape # Recupera o tamanho da imagem
print('tamanho', nl, nc, 'nro de bandas', nb)
# transforma imagem RGB para imagem cinza usando openCV, e mostra
G = cv2.cvtColor(I, cv2.COLOR_BGR2GRAY)
cv2_imshow(G)
# calcular o histograma na faixa de 0-255, ou seja, 256 valores
histo= cv.calcHist([I],[0],None,[256],[0,256])
plt.plot(histo)
plt.show()