Crie uma paleta de cores usando Python

Crie uma paleta de cores usando Python

Os seres humanos podem distinguir cerca de 10 milhões de cores. Para percebê-los, você precisa de algo conhecido como paleta de cores. Uma paleta de cores contém as ferramentas para exibir toda a gama de cores visíveis ao olho humano. No mundo real, você os usa para criar designs estéticos no papel, enquanto digitalmente os usa para adicionar cores aos elementos da tela.

Por fim, seu computador codifica todas as diferentes tonalidades que você vê na tela usando um formato específico. Com o Python, você pode desenvolver uma paleta de cores codificada em RGB em apenas algumas linhas de código, graças ao módulo OpenCV e NumPy.

O módulo OpenCV e NumPy

Você pode analisar imagens e vídeos usando o OpenCV. É gratuito, de código aberto, simples de usar e repleto de bibliotecas úteis. Estes fornecem técnicas para classificar, localizar e rastrear objetos em duas e três dimensões. Para instalar o OpenCV em seu ambiente, abra um terminal e execute:

pip install opencv-python

O módulo NumPy é outra biblioteca popular que você verá muitos programas Python usar. NumPy — Python numérico — é um módulo que você pode usar para análise de dados e computação científica. Ele fornece objetos de matriz n-dimensionais, bem como operações matemáticas que auxiliam na manipulação dessas matrizes.

Para instalar o NumPy em seu ambiente, execute:

pip install numpy

Geralmente, você usará OpenCV para processar imagens usando técnicas como detecção de borda. Você pode usar o NumPy para realizar a análise de dados na imagem processada. Usando essa combinação, você pode criar e decodificar um código QR, classificar imagens, realizar reconhecimento óptico de caracteres e construir sistemas de vigilância por vídeo capazes de detectar movimentos e rastrear indivíduos em tempo real.

Como construir uma paleta de cores usando Python

Siga estas etapas para criar uma paleta de cores usando o módulo OpenCV e NumPy em Python.

Comece importando os módulos OpenCV e NumPy. Defina uma função chamada emptyfunction() que contém a instrução pass. A instrução pass atua como um espaço reservado para o código que você pode escrever no futuro. Isso é particularmente útil com funções como createTrackbar, que você usará posteriormente. Requer uma função de retorno de chamada válida e você pode passar emptyFunction como um espaço reservado por enquanto.

import cv2
import numpy as np

def emptyFunction():
    pass

Gere uma matriz tridimensional de tamanho 512 * 512 * 3 com um tipo de dados uint8 usando a função zero() do NumPy . Cada array consistirá em 512 colunas e 512 linhas. uint8 representa um número inteiro sem sinal, então o programa preenche a matriz com zeros.

image = np.zeros((512, 512, 3), np.uint8)

Defina o nome da janela que o programa exibirá e passe-o para a função namedWindow() para criar uma janela:

windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)

Em seguida, gere três barras de controle para os componentes de cor vermelha, verde e azul. Você pode fazer isso usando a função createTrackbar() do OpenCV . Em primeiro lugar, passe a etiqueta como Vermelho, Azul ou Verde. Em segundo lugar, você precisa passar o nome da janela onde deseja colocar essas barras exemplo, windowName.

O terceiro parâmetro é o limite mínimo da barra de trilha, 0 neste caso. O quarto parâmetro especifica o valor máximo, que é 255 para um valor de cor de 24 bits. O quinto e último parâmetro é uma função de retorno de chamada para a qual o createTrackbar requer uma função válida. É por isso que você criou emptyFunction anteriormente, para atuar como um espaço reservado.

cv2.createTrackbar('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)

Declare um loop while infinito e passe o nome da janela junto com a imagem que você deseja exibir para a função imshow() do OpenCV . Como a imagem contém uma matriz tridimensional de zeros, o programa exibe inicialmente uma tela preta.

Verifique se o usuário pressionou a tecla escape testando o valor de waitkey() em relação a 27 (o código ASCII para a tecla Escape). A função waitkey() exibe a janela por um determinado número de milissegundos ou até que você pressione uma tecla. Ao passar um como entrada, ele exibe a janela por um milissegundo, mas se regenera devido ao loop while infinito.

Para obter a posição atual da barra de trilha, passe o nome da barra de trilha junto com o nome da janela para getTrackbarPos() . Repita esta etapa para os três componentes de cor separados, azul, verde e vermelho. Use o operador de fatia para atribuir os três valores à matriz de imagem. Isso substituirá o conjunto anterior de valores, inicialmente todos zeros, pelos valores atuais de acordo com as posições da barra de controle.

while (True):
    cv2.imshow(windowName, image)

    if cv2.waitKey(1) == 27:
        break


    blue = cv2.getTrackbarPos('Blue', windowName)
    green = cv2.getTrackbarPos('Green', windowName)
    red = cv2.getTrackbarPos('Red', windowName)
    image[:] = [blue, green, red]
    print(blue, green, red)

Assim que o usuário pressionar a tecla Escape, use destroyAllWindows() para fechar as janelas que o programa abriu:

cv2.destroyAllWindows()

Por fim, junte tudo e execute-o para controlar e visualizar sua paleta de cores.

A saída do programa de paleta de cores Python

Ao executar o programa acima, aparece uma janela que contém três barras de controle para as cores Azul, Verde e Vermelho. As barras de controle variam de 0 a 255. Quando você varia os valores das diferentes barras, deve ver diferentes tonalidades de cores na seção abaixo.

Neste primeiro exemplo, você pode ver a configuração da barra azul como 0, verde como 69 e vermelha como 255. A cor de saída resultante é um tom de laranja/vermelho. Além disso, a janela do terminal exibe os valores de cor como 0 69 255.

Paleta de cores para vermelho laranja

Da mesma forma, quando você definir a barra azul como 130, verde como 0 e vermelha como 75, obterá uma cor índigo.

Paleta de cores para índigo

As várias aplicações do OpenCV

O OpenCV oferece funções valiosas para tarefas como processamento de imagens, reconhecimento de objetos, reconhecimento facial e rastreamento. Usando o OpenCV, você pode produzir aplicativos de visão computacional em tempo real que seriam uma benção em áreas como robótica, automação industrial, imagens médicas e sistemas de vigilância.

O futuro da visão computacional é promissor. Você poderá usar a visão computacional para ajudar os deficientes visuais, obter melhor crescimento na agricultura, aumentar a segurança nas estradas usando carros autônomos e até navegar em outros planetas, como Marte.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *