O tutorial final do NumPy para iniciantes em ciência de dados

Conteúdo

Imagens e matrizes NumPy

Os arrays NumPy encontram amplo uso no armazenamento e manipulação de dados de imagem. Mas, O que realmente são dados de imagem?

As imagens são compostas por pixels que são armazenados como uma matriz. Cada pixel tem um valor que varia entre 0 e 255: 0 indica um pixel preto e 255 indica um pixel branco. Uma imagem colorida consiste em três matrizes 2-D, um para cada um dos canais de cor: vermelho, verde e azul, colocados um atrás do outro, formando assim uma matriz 3-D. Cada valor na matriz constitui um valor de pixel. Então, el tamaño de la matriz depende de la cantidad de píxeles a lo largo de cada dimensão.

Dê uma olhada na próxima imagem:

Exemplo de uma imagem gnarled

Python pode ler a imagem como uma matriz usando o scipy.misc.imread () método na biblioteca SciPy. E quando nós o geramos, é simplesmente uma matriz 3d que contém os valores de pixel:

import numpy as np
import matplotlib.pyplot as plt
from scipy import misc

# read image
im = misc.imread('./original.jpg')
# image
im
variedade([[[115, 106,  67],
        [113, 104,  65],
        [112, 103,  64],
        ...,
        [160, 138,  37],
        [160, 138,  37],
        [160, 138,  37]],

       [[117, 108,  69],
        [115, 106,  67],
        [114, 105,  66],
        ...,
        [157, 135,  36],
        [157, 135,  34],
        [158, 136,  37]],

       [[120, 110,  74],
        [118, 108,  72],
        [117, 107,  71],
        ...,

Podemos verificar a forma e o tipo desta matriz NumPy:

imprimir(im.shape)
imprimir(modelo(modelo))
(561, 997, 3)
numpy.ndarray

Agora, uma vez que uma imagem é apenas uma matriz, podemos facilmente manipulá-lo usando uma função de matriz que vimos no post. O que, poderíamos virar a imagem horizontalmente usando o np.flip () método:

# flip
plt.imshow(np.flip(Im, eixo = 1))

Fotos de numpy virada

ou você pode normalizar ou alterar a gama de valores de pixels. As vezes, isso é útil para cálculos mais rápidos.

im / 255
variedade([[[0.45098039, 0.41568627, 0.2627451 ],
        [0.44313725, 0.40784314, 0.25490196],
        [0.43921569, 0.40392157, 0.25098039],
        ...,
        [0.62745098, 0.54117647, 0.14509804],
        [0.62745098, 0.54117647, 0.14509804],
        [0.62745098, 0.54117647, 0.14509804]],

       [[0.45882353, 0.42352941, 0.27058824],
        [0.45098039, 0.41568627, 0.2627451 ],
        [0.44705882, 0.41176471, 0.25882353],
        ...,
        [0.61568627, 0.52941176, 0.14117647],
        [0.61568627, 0.52941176, 0.13333333],
        [0.61960784, 0.53333333, 0.14509804]],

       [[0.47058824, 0.43137255, 0.29019608],
        [0.4627451 , 0.42352941, 0.28235294],
        [0.45882353, 0.41960784, 0.27843137],
        ...,
        [0.6       , 0.52156863, 0.14117647],
        [0.6       , 0.52156863, 0.13333333],
        [0.6       , 0.52156863, 0.14117647]],

       ...,

Lembre-se de que isso está usando os mesmos ufuncs e conceito de streaming que vimos no post!!

Existem muitas outras coisas que você poderia fazer para manipular suas imagens que seriam úteis ao classificar imagens usando redes neurais.. Se você estiver interessado em construir seu próprio classificador de imagens, Você pode acessar aqui um tutorial incrível sobre o assunto!!

Notas finais

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.