Spaces:
No application file
No application file
| """ | |
| 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) | |