File size: 4,941 Bytes
138a175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
"""
Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro

Links de estudo:
================

* 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

* 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

"""

"""
Como ler, escrever, exibir imagens em OpenCV e converter espaços de cores
=========================================================================

Ao trabalhar com imagens, algumas das operações mais básicas que são essenciais para dominar 
incluem ler as imagens do disco, exibi-las, acessar seus valores de pixel e convertê-las de 
um espaço de cores para outro.

Este tutorial explica essas operações básicas, começando primeiro com uma descrição de como 
uma imagem digital é formulada em termos de suas coordenadas espaciais e valores de intensidade. 

Neste tutorial, você se familiarizará com as operações mais básicas do 🤗 OpenCV 🤗, essenciais ao trabalhar com imagens. 

Depois de concluir este tutorial, você saberá:

* Como uma imagem digital é formulada em termos de suas coordenadas espaciais e valores de intensidade. 
* Como uma imagem é lida e exibida no OpenCV. 
* Como os valores de pixel de uma imagem podem ser acessados. 
* Como uma imagem pode ser convertida de um espaço de cores para outro

NOTA:
=====

* As intensidades de pixel são comumente representadas por valores inteiros no intervalo [0, 255], 
  o que significa que cada pixel pode assumir qualquer um dos 256 valores discretos. 

* Uma imagem RGB, por outro lado, é composta por três canais, nomeadamente o Vermelho , o Verde e o Azul . 

* O modelo de cores RGB não é o único que existe, mas é possivelmente o mais comumente usado em muitas 
  aplicações de visão computacional. É um modelo de cor aditivo, que se refere ao processo de criação 
  de cor misturando (ou adicionando) espectros de luz de fontes de cores diferentes. 
"""

from cv2 import imread
# Aqui o link para baixar IMAGENS de graça --> https://unsplash.com/pt-br
img = imread('Images/Dog.jpg') # Método 'imread()' retorna uma matriz NumPy. img --> contém os valores de pixel da Imagem

print('Tipo de Dados:', img.dtype, '\nDimensões:', img.shape)
"""
Isso significa que os pixels em cada canal da imagem podem assumir qualquer um dos 2^8 = 256 valores, 
dentro de um intervalo de 0 a 255. Aprendemos também que as dimensões do array são 4000 × 6000 × 3, 
que correspondem ao número de linhas, colunas e canais da imagem, respectivamente.
"""

print("Primeiro pixel situado no canto superior esquerdo da imagem BGR: ", img[0, 0])


# Usando Matplotlib:
import matplotlib.pyplot as plt
plt.imshow(img)
plt.title('Exibindo imagem do Dog, usando Matplotlib')
plt.show()


# Usando OpenCV: (A imagem fica muito Grane !!!)
from cv2 import imshow, waitKey
imshow('Exibindo imagem do Dog, usando OpenCV', img)
waitKey(0) # Pressione 'esc' para sair

# Com OpenCV, você também pode escrever um array NumPy como uma imagem em um arquivo, como segue:
from cv2 import imwrite
imwrite("output.jpg", img)


"""
Convertendo entre espaços de cores
==================================
"""
# Para converter entre os espaços de cores BGR e RGB, podemos usar o seguinte código:
from cv2 import cvtColor, COLOR_BGR2RGB
img_rgb = cvtColor(img, COLOR_BGR2RGB)
# Exibir, novamente, usando Matplotlib, agora podemos ver que ela é exibida corretamente:
plt.imshow(img_rgb)
plt.title('Exibindo imagem do Dog, usando Matplotlib e com cor RGB')
plt.grid(True)
plt.show()

print("Primeiro pixel situado no canto superior esquerdo da imagem RGB recém-convertida: ", img_rgb[0, 0])


"""
BGR para RGB não é a única conversão de cores que pode ser obtida por este método. Na verdade, 
existem muitos códigos de conversão de espaço de cores para escolher, como COLOR_RGB2HSV que converte 
entre os espaços de cores RGB e HSV (Hue, Saturation, Value)=(matiz, saturação, valor). 


Outra conversão popular é de RGB para escala de cinza onde, como mencionamos anteriormente, 
espera-se que a saída resultante seja uma imagem de canal único. Vamos experimentar:
"""

from cv2 import COLOR_RGB2GRAY
 
img_gray = cvtColor(img_rgb, COLOR_RGB2GRAY)

imshow('Grayscale Image', img_gray)
waitKey(0)

# Como esperado, é impresso apenas um único número que corresponde ao valor de intensidade do pixel:
print("Primeiro pixel nas coordenadas (0, 0) da Imagem Cinza: ", img_gray[0, 0])


"""
🤗🤗 Podemos trabalhar com a Imagem em escala de cinza imediatamente 🤗🤗:
"""

from cv2 import IMREAD_GRAYSCALE
 
img_gray = imread('Images/Dog.jpg', IMREAD_GRAYSCALE)
 
imshow('Grayscale Image', img_gray)
waitKey(0)