Chroma key com OpenCV
Descubra como utilizar uma tela verde e técnicas avançadas de edição para adicionar efeitos visuais de qualidade cinematográfica ao seu filme.
O que é o Chroma Key?
Chroma key é uma técnica utilizada na pós-produção, é possível substituir digitalmente esses cenários verdes de baixo custo por qualquer imagem de fundo desejado, por meio de um processo chamado chroma key.
Ao ser utilizado em conjunto com software de edição de vídeo, o chroma key se torna uma ferramenta poderosa para aprimorar seu vídeo ou imagem com efeitos impressionantes ou realizar pequenos ajustes.
Entendendo o Chroma Key
A objetivo é utilizar o contraste de cores para alterar a realidade, recortando nossos sujeitos de um fundo e colocando-os em um local completamente diferente.”
“O Chroma keying está usando informações de cores para selecionar uma gama muito específica de cores e isolá-las”, diz o cineasta profissional Colin Dougan. “
Alcançar esse contraste é a razão do uso do chroma key (uma tela verde). Como o verde geralmente não está presente em tons de pele ou cores de cabelo, o software de edição de vídeo pode facilmente distinguir entre os atores e seus antecedentes, desde que não estejam vestindo roupas verdes.
Caso estejam, é possível utilizar uma tela azul para criar um contraste forte com o fundo. Alguns estúdios preferem o azul, pois é mais favorecedor para os tons de pele.
O que você pode fazer com o Chorma Key
O Chroma Key é amplamente utilizado na indústria cinematográfica para criar efeitos especiais, permitindo que os cineastas criem cenários virtuais ou substituam fundos de maneira realista. Isso é especialmente útil para criar ambientes fantasiosos, cenários históricos ou locações impossíveis de filmar fisicamente.
Muitas empresas utilizam o Chroma Key para criar vídeos promocionais e comerciais com fundos personalizados. Isso permite que eles criem um ambiente visualmente atraente e relacionado à sua marca, destacando produtos ou serviços.
O Chroma Key também é utilizado em transmissões ao vivo, como em programas de notícias, programas esportivos ou eventos especiais. Pode-se substituir o fundo para exibir gráficos, imagens ou vídeos relacionados ao conteúdo sendo transmitido, melhorando a apresentação visual e mantendo o público engajado.
O Chroma Key é frequentemente utilizado em vídeos educacionais e tutoriais online. Com ele, é possível criar um ambiente visualmente atraente e interativo para explicar conceitos complexos, exibir ilustrações ou simulações, ou até mesmo transportar o apresentador para um ambiente relevante.
Certamente! O uso do Chroma Key oferece uma infinidade de possibilidades, e sua aplicação depende das necessidades específicas e da criatividade de quem a utiliza.
Algumas dicas quanto ao uso do Chroma Key
Para criar proveito do uso do chroma key voce precisa ter alguns cuidados ao gravar o video com o fundo verde como por exemplo:
- É importante garantir uma cobertura completa do fundo ao utilizar o Chroma Key, caso contrário, será necessário realizar a máscara dos cantos da tela. Além disso, é essencial iluminar uniformemente a cena para obter melhores resultados e evitar problemas visuais.
- Ao utilizar um material dobrável, certifique-se de remover quaisquer rugas antes de iniciar a gravação com Chroma Key. Rugas podem criar sombras intensas que exigirão tempo e esforço adicional para disfarçar. Portanto, é recomendado esticar a tela adequadamente para obter uma superfície lisa e uniforme.
- Caso os atores estejam muito próximos da tela verde durante a filmagem, é importante estar ciente do possível derramamento de luz verde, também é importante ajustar corretamente a iluminação para minimizar este efeito.
Chroma Key com OpenCV
Nossa tarefa consiste em substituir o fundo verde do vídeo_01 pelo fundo presente no vídeo_02.
O código completo do projeto estará disponivel aqui.
Get Jonys Arcanjo’s stories in your inbox
Join Medium for free to get updates from this writer.
Aqui está uma explicação passo a passo do código:
- Importa as bibliotecas necessárias:
cv2: Biblioteca OpenCV para processamento de imagens.numpy(abreviado comonp): Biblioteca para manipulação de arrays e cálculos numéricos.
2. Carrega dois vídeos:
cap_webcam: Lê o vídeo da webcam ou de um arquivo de vídeo, dependendo da linha descomentada.cap_fundo: Lê um arquivo de vídeo que será usado como fundo.
3. Entra em um loop principal:
- Lê um quadro (frame) de cada vídeo usando as funções
cap_webcam.read()ecap_fundo.read(). - Verifica se os vídeos terminaram. Se um dos vídeos chegar ao fim, o loop é encerrado.
4. Define os limites de cor verde em formato RGB:
lower_greeneupper_greendefinem os valores mínimos e máximos para a cor verde. Os valores fornecidos neste exemplo são uma aproximação dos limites para a cor verde.
5. Cria uma máscara para identificar os pixels na faixa de cor verde:
mask = cv2.inRange(frame_webcam, lower_green, upper_green)cria uma máscara binária onde os pixels na faixa de cor verde são representados por 255 (branco) e os pixels fora da faixa são representados por 0 (preto).
6. Extrai os pixels do fundo verde usando a máscara:
fundo_background = cv2.bitwise_and(frame_fundo, frame_fundo, mask=mask)aplica a máscara para extrair os pixels do quadro do fundo que correspondem à cor verde do quadro da webcam.
Este é o resultado da nossa primeira mascará:
7. Inverte a máscara para obter os pixels que não estão na faixa de cor verde:
mask_inv = np.invert(mask)inverte a máscara para que os pixels que não estão na faixa de cor verde sejam representados por 255 (branco) e os pixels verdes sejam representados por 0 (preto).
8. Extrai os pixels da webcam que não são verdes:
webcam_foreground = cv2.bitwise_and(frame_webcam, frame_webcam, mask=mask_inv)aplica a máscara invertida para extrair os pixels da webcam que não são verdes.
9. Combina os pixels extraídos do fundo com os pixels da webcam:
result = cv2.addWeighted(fundo_background, 1, webcam_foreground, 1, 0)combina os dois conjuntos de pixels usando uma operação de adição ponderada para criar uma imagem final em que o fundo verde é substituído pelo conteúdo da webcam.
10. Mostra o resultado em uma janela:
cv2.imshow("Resultado", result)exibe o resultado da substituição de fundo em uma janela com o título "Resultado".
11. Verifica se a tecla ‘q’ é pressionada para encerrar o programa:
if cv2.waitKey(1) & 0xFF == ord('q'):verifica se a tecla 'q' foi pressionada. Se sim, o loop é encerrado e o programa é finalizado.
Ao executar o programa, o resultado obtido é um vídeo que combina o conteúdo do vídeo01 com o fundo do vídeo02.
Curta e compartilhe
Se você gostou do artigo e gostaria de me apoiar, certifique-se de:
👏 Palmas para a artigo (50 palmas) para ajudar este artigo a ser apresentado para mais pessoas.
🔔 Siga-me: LinkedIn
📧e-mail: contato.jonys.arcanjo@gmail.com










