RGB e Mescla de Imagens: Entendendo e Aplicando em Python com OpenCV

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

A manipulação de cores e a mescla de imagens são técnicas fundamentais no processamento de imagens digitais. Neste tutorial, vamos explorar o conceito de RGB e como realizar a mescla de imagens utilizando a biblioteca OpenCV em Python.

O que é RGB?

RGB é uma sigla para Red (Vermelho), Green (Verde) e Blue (Azul), que são as cores primárias da luz. Em dispositivos digitais como monitores e câmeras, as cores são representadas pela combinação dessas três cores básicas. Cada cor é representada por um valor que varia de 0 a 255, onde 0 significa ausência da cor e 255 a presença total da cor.

Cores RGB (red, green, blue)

Representação de Cores

Podemos fazer a representação de cores em dispositivos digitais de diferentes maneiras, como:

  • Escala de 0 a 1 para cada cor.
  • Notação hexadecimal, variando de 00 a FF.
  • Escala de 0 a 255 para cada cor.

Por exemplo, podemos representar a cor vermelha pura como (255, 0, 0) em RGB, onde há presença total de vermelho e ausência de verde e azul.

representação do vermelho no RGB

Mescla de Imagens com OpenCV

A mescla de imagens, ou blending, é o processo de combinar duas ou mais imagens em uma única imagem. Vamos ver como realizar essa técnica com OpenCV.

Carregando e Separando Canais de Cor

Primeiro, carregamos a imagem e separamos os canais de cor:

import cv2

# Carregar a imagem
imagem = cv2.imread('caminho_para_imagem.jpg')

# Separar os canais de cor
canal_azul, canal_verde, canal_vermelho = cv2.split(imagem)

Mesclando Imagens

Para mesclar imagens, utilizamos a função cv2.merge():

# Mesclar canais de cor
imagem_mesclada = cv2.merge((canal_azul, canal_verde, canal_vermelho))

Invertendo Canais de Cor

Podemos inverter os canais para alterar as cores da imagem:

# Inverter canais de cor
imagem_invertida = cv2.merge((canal_vermelho, canal_verde, canal_azul))

Visualizando a Imagem

Para visualizar a imagem resultante, utilizamos:

cv2.imshow('Imagem Mesclada', imagem_mesclada)
cv2.waitKey(0)
cv2.destroyAllWindows()

Para visualizar cada canal de imagem individualmente:

# Criamos uma tela branca utilizando as dimensões da nossa imagem lida
blank = np.zeros(img.shape[:2], dtype='uint8')

# Abrimos as imagens uma a uma em seus respectivos canais, mesclando com as matrizes de zeros 
blue = cv2.merge([canal_azul,blank,blank])
green = cv2.merge([blank,canal_verde,blank])
red = cv2.merge([blank,blank,canal_vermelho])

#visualizamos
cv2.imshow('Azul', blue)
cv2.imshow('Verde', green)
cv2.imshow('Vermelho', red)
imagem com canais separados

Exemplo Prático: Mesclando uma Maçã e um Toca-discos

Vamos aplicar o que aprendemos em um exemplo prático, mesclando uma imagem de uma maçã com a de um toca-discos.

# Carregar as imagens
maca = cv2.imread('maca.jpg')
toca_discos = cv2.imread('toca_discos.jpg')

# Mesclar as imagens
imagem_final = cv2.addWeighted(maca, 0.5, toca_discos, 0.5, 0)

# Exibir a imagem mesclada
cv2.imshow('Mescla de Maçã e Toca-discos', imagem_final)
cv2.waitKey(0)
cv2.destroyAllWindows()

Neste exemplo, usamos a função cv2.addWeighted() para mesclar as imagens com pesos iguais, resultando em uma combinação equilibrada das duas imagens.

mesclagem de vitrola e maçã

Conclusão

Entender o modelo de cores RGB e como realizar a mescla de imagens são habilidades essenciais para quem trabalha com processamento de imagens. Com a biblioteca OpenCV em Python, essas tarefas se tornam acessíveis e podem ser aplicadas em diversos projetos de visão computacional. Experimente com diferentes combinações de cores e imagens para explorar as possibilidades criativas que essa técnica oferece.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: