Spaces:
No application file
No application file
eddygiusepe commited on
Commit ·
138a175
1
Parent(s): ad5dfc9
OpenCV mudando cores. Imagem cinza e RGB
Browse files
4_OpenCV_with_MachineLearningMastery.py
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro
|
| 3 |
+
|
| 4 |
+
Links de estudo:
|
| 5 |
+
================
|
| 6 |
+
|
| 7 |
+
* https://machinelearningmastery.com/how-to-read-write-display-images-in-opencv-and-converting-color-spaces/?utm_source=drip&utm_medium=email&utm_campaign=A+gentle+introduction+to+OpenCV&utm_content=A+gentle+introduction+to+OpenCV
|
| 8 |
+
|
| 9 |
+
* https://machinelearningmastery.com/how-to-read-and-display-videos-using-opencv/?utm_source=drip&utm_medium=email&utm_campaign=A+gentle+introduction+to+OpenCV&utm_content=A+gentle+introduction+to+OpenCV
|
| 10 |
+
|
| 11 |
+
"""
|
| 12 |
+
|
| 13 |
+
"""
|
| 14 |
+
Como ler, escrever, exibir imagens em OpenCV e converter espaços de cores
|
| 15 |
+
=========================================================================
|
| 16 |
+
|
| 17 |
+
Ao trabalhar com imagens, algumas das operações mais básicas que são essenciais para dominar
|
| 18 |
+
incluem ler as imagens do disco, exibi-las, acessar seus valores de pixel e convertê-las de
|
| 19 |
+
um espaço de cores para outro.
|
| 20 |
+
|
| 21 |
+
Este tutorial explica essas operações básicas, começando primeiro com uma descrição de como
|
| 22 |
+
uma imagem digital é formulada em termos de suas coordenadas espaciais e valores de intensidade.
|
| 23 |
+
|
| 24 |
+
Neste tutorial, você se familiarizará com as operações mais básicas do 🤗 OpenCV 🤗, essenciais ao trabalhar com imagens.
|
| 25 |
+
|
| 26 |
+
Depois de concluir este tutorial, você saberá:
|
| 27 |
+
|
| 28 |
+
* Como uma imagem digital é formulada em termos de suas coordenadas espaciais e valores de intensidade.
|
| 29 |
+
* Como uma imagem é lida e exibida no OpenCV.
|
| 30 |
+
* Como os valores de pixel de uma imagem podem ser acessados.
|
| 31 |
+
* Como uma imagem pode ser convertida de um espaço de cores para outro
|
| 32 |
+
|
| 33 |
+
NOTA:
|
| 34 |
+
=====
|
| 35 |
+
|
| 36 |
+
* As intensidades de pixel são comumente representadas por valores inteiros no intervalo [0, 255],
|
| 37 |
+
o que significa que cada pixel pode assumir qualquer um dos 256 valores discretos.
|
| 38 |
+
|
| 39 |
+
* Uma imagem RGB, por outro lado, é composta por três canais, nomeadamente o Vermelho , o Verde e o Azul .
|
| 40 |
+
|
| 41 |
+
* O modelo de cores RGB não é o único que existe, mas é possivelmente o mais comumente usado em muitas
|
| 42 |
+
aplicações de visão computacional. É um modelo de cor aditivo, que se refere ao processo de criação
|
| 43 |
+
de cor misturando (ou adicionando) espectros de luz de fontes de cores diferentes.
|
| 44 |
+
"""
|
| 45 |
+
|
| 46 |
+
from cv2 import imread
|
| 47 |
+
# Aqui o link para baixar IMAGENS de graça --> https://unsplash.com/pt-br
|
| 48 |
+
img = imread('Images/Dog.jpg') # Método 'imread()' retorna uma matriz NumPy. img --> contém os valores de pixel da Imagem
|
| 49 |
+
|
| 50 |
+
print('Tipo de Dados:', img.dtype, '\nDimensões:', img.shape)
|
| 51 |
+
"""
|
| 52 |
+
Isso significa que os pixels em cada canal da imagem podem assumir qualquer um dos 2^8 = 256 valores,
|
| 53 |
+
dentro de um intervalo de 0 a 255. Aprendemos também que as dimensões do array são 4000 × 6000 × 3,
|
| 54 |
+
que correspondem ao número de linhas, colunas e canais da imagem, respectivamente.
|
| 55 |
+
"""
|
| 56 |
+
|
| 57 |
+
print("Primeiro pixel situado no canto superior esquerdo da imagem BGR: ", img[0, 0])
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
# Usando Matplotlib:
|
| 61 |
+
import matplotlib.pyplot as plt
|
| 62 |
+
plt.imshow(img)
|
| 63 |
+
plt.title('Exibindo imagem do Dog, usando Matplotlib')
|
| 64 |
+
plt.show()
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
# Usando OpenCV: (A imagem fica muito Grane !!!)
|
| 68 |
+
from cv2 import imshow, waitKey
|
| 69 |
+
imshow('Exibindo imagem do Dog, usando OpenCV', img)
|
| 70 |
+
waitKey(0) # Pressione 'esc' para sair
|
| 71 |
+
|
| 72 |
+
# Com OpenCV, você também pode escrever um array NumPy como uma imagem em um arquivo, como segue:
|
| 73 |
+
from cv2 import imwrite
|
| 74 |
+
imwrite("output.jpg", img)
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
"""
|
| 78 |
+
Convertendo entre espaços de cores
|
| 79 |
+
==================================
|
| 80 |
+
"""
|
| 81 |
+
# Para converter entre os espaços de cores BGR e RGB, podemos usar o seguinte código:
|
| 82 |
+
from cv2 import cvtColor, COLOR_BGR2RGB
|
| 83 |
+
img_rgb = cvtColor(img, COLOR_BGR2RGB)
|
| 84 |
+
# Exibir, novamente, usando Matplotlib, agora podemos ver que ela é exibida corretamente:
|
| 85 |
+
plt.imshow(img_rgb)
|
| 86 |
+
plt.title('Exibindo imagem do Dog, usando Matplotlib e com cor RGB')
|
| 87 |
+
plt.grid(True)
|
| 88 |
+
plt.show()
|
| 89 |
+
|
| 90 |
+
print("Primeiro pixel situado no canto superior esquerdo da imagem RGB recém-convertida: ", img_rgb[0, 0])
|
| 91 |
+
|
| 92 |
+
|
| 93 |
+
"""
|
| 94 |
+
BGR para RGB não é a única conversão de cores que pode ser obtida por este método. Na verdade,
|
| 95 |
+
existem muitos códigos de conversão de espaço de cores para escolher, como COLOR_RGB2HSV que converte
|
| 96 |
+
entre os espaços de cores RGB e HSV (Hue, Saturation, Value)=(matiz, saturação, valor).
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
Outra conversão popular é de RGB para escala de cinza onde, como mencionamos anteriormente,
|
| 100 |
+
espera-se que a saída resultante seja uma imagem de canal único. Vamos experimentar:
|
| 101 |
+
"""
|
| 102 |
+
|
| 103 |
+
from cv2 import COLOR_RGB2GRAY
|
| 104 |
+
|
| 105 |
+
img_gray = cvtColor(img_rgb, COLOR_RGB2GRAY)
|
| 106 |
+
|
| 107 |
+
imshow('Grayscale Image', img_gray)
|
| 108 |
+
waitKey(0)
|
| 109 |
+
|
| 110 |
+
# Como esperado, é impresso apenas um único número que corresponde ao valor de intensidade do pixel:
|
| 111 |
+
print("Primeiro pixel nas coordenadas (0, 0) da Imagem Cinza: ", img_gray[0, 0])
|
| 112 |
+
|
| 113 |
+
|
| 114 |
+
"""
|
| 115 |
+
🤗🤗 Podemos trabalhar com a Imagem em escala de cinza imediatamente 🤗🤗:
|
| 116 |
+
"""
|
| 117 |
+
|
| 118 |
+
from cv2 import IMREAD_GRAYSCALE
|
| 119 |
+
|
| 120 |
+
img_gray = imread('Images/Dog.jpg', IMREAD_GRAYSCALE)
|
| 121 |
+
|
| 122 |
+
imshow('Grayscale Image', img_gray)
|
| 123 |
+
waitKey(0)
|