
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.

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.

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)

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.

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.

Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários
30xp