Crie uma ferramenta de rotoscopia automática incrivelmente útil enquanto aprende o básico de Python neste guia de 40 minutos. Não é preciso experiência em codificação.
Ainda estamos a alguns anos de uma IA de machine learning que pode produzir rotoscopias que rivalizam com o que os artistas podem alcançar (embora apenas muito poucos), mas ainda hoje o machine learning oferece resultados que são mais do que adequados para correção de cores, camera tracking garbage mattes ou temp roto para composições enquanto aguarda a roto final. E com apenas algumas linhas de código, você – o não qualificado, não programador – pode ter esse machine learning sob seu comando. O que é melhor, você pode começar a aprender um pouco de Python no processo.
Neste vídeo ‘Impossible Shot’, você terá uma boa introdução à programação em Python e sairá do outro lado com uma incrível ferramenta de rotoscopia que você pode usar na produção.
Metade da batalha está ganha ao instalar tudo corretamente. Abaixo está um resumo do que é coberto no vídeo.
Etapa 1: instalar o Anaconda
O Anaconda é um incrível pacote de instalação para Python que permite instalar softwares de terceiros sem precisar pesquisar na web. Isso também facilita os ambientes virtuais: os ambientes virtuais são ‘caixas’ de desenvolvimento nas quais você pode experimentar sem atrapalhar nenhum outro software instalado no seu computador. (Clique aqui para baixar o Anaconda para sua plataforma)
Depois de instalar o Anaconda em seu sistema, abra o prompt do Anaconda (ou o Terminal regular no OS X) e execute os seguintes comandos para criar e ativar um ambiente virtual personalizado (que chamaremos de ‘autoroto’ – você pode escolher qualquer nome você gosta):
conda create --name autoroto
conda activate autoroto
Para sair de um ambiente virtual, basta digitar:
conda deactivate
Etapa 2: instalar as bibliotecas necessárias
Trabalharemos com o código fornecido pelo learnopencv.com , um site incrível para aprender sobre visão computacional e machine learning. O melhor da programação moderna é que você não precisa entender completamente como algo funciona para usar o código. Você pode tratar coisas como “caixas pretas” e apenas colher os benefícios.
Para usar o código, precisamos instalar algumas das bibliotecas de terceiros necessárias para sua execução. Verifique se o seu ambiente virtual está ativado (veja acima) e digite:
conda install torchvision -c pytorch
conda install -c anaconda pillow
Etapa 3: Faça o download do código de exemplo
Clique aqui para baixar o código que modificamos no learnopencv.org. Usaremos isso como base para a auto rotoscopia. Agora crie um arquivo Python. Usaremos o Wind Personal IDE aqui, mas você pode usar outro, se preferir. Um IDE é um ‘ambiente de desenvolvimento integrado’, basicamente um processador de texto projetado especificamente para escrever código. Isso ajudará a verificar os programas com erro e fornecerá dicas úteis e o preenchimento automático de código enquanto você digita. Vá em frente, faça o download e instale o Wing se quiser acompanhar o mais próximo possível.
Salve um novo arquivo Python vazio no mesmo diretório do código de exemplo que você acabou de baixar (FindMattes.py). Chame de ‘autoroto.py’. Enquanto estiver no mesmo diretório que o FindMattes.py, o Python não terá problemas ao vincular às funções do FindMattes.
Etapa 4: faça um teste inicial de auto rotoscopia
Vamos testar nosso rotoscoper para ver se ele realmente funciona antes de enviar uma sequência de imagens inteira. Basta apenas duas linhas de código para criar um roto automático de uma imagem. No autoroto.py, adicione as seguintes linhas e salve o arquivo:
import FindMattes.py as fm
fm.fm.createMatte("Path/to/your/source/image.png", "Path/to/resulting/matte_file.png", 256)
Substitua a primeira parte pelo caminho da sua imagem de teste ( mantenha as aspas ao redor do caminho . Por exemplo, “C: /Users/yourusername/Documents/myImage.png” ou “/Users/yourusername/Documents/myImage.png”), o segundo com o caminho pretendido e o nome da imagem fosca resultante (por exemplo, “C: /Users/yourusername/Documents/myImage_matte.png” ou “/Users/yourusername/Documents/myImage_matte.png”) e o último número com a resolução vertical da imagem de saída. Minha recomendação é manter isso em 256 para teste. Imagens em resolução total de 2K e 4K podem levar muito tempo para serem processadas em máquinas mais modestas.
Agora execute seu programa digitando no prompt da linha de comando:
python "Path/to/your/program/autoroto.py"
Ao procurar no diretório, agora você deve encontrar uma imagem fosca, rotoscopando automaticamente os recursos identificados da foto, codificados por cores de acordo com os valores de 8 bits listados em FindMattes.py.
Etapa 5: peça pastas ao usuário
Então, a coisa funciona, mas você deseja usar para qualquer sequência de imagens antiga, certo? Bem, aqui está o código completo. Tudo é passado em detalhes no vídeo, mas se você está desesperado apenas por ter a versão de trabalho … digite.
import FindMattes as fm
import tkinter as tk
from tkinter import filedialog
from tkinter import simpledialog as sd
from os import listdir
# Get the file directory
root = tk.Tk()
root.withdraw()
directoryName = filedialog.askdirectory(parent=root, initialdir="/", title = 'Please select a directory')
matteHeight = sd.askinteger("Set the matte size", "Output matte vertical resolution (256 recommended for quick tests)?", parent=root,initialvalue=256)
listOfFiles = listdir(directoryName)
for currentFile in listOfFiles:
sourceFile = directoryName + "/" + currentFile
mainNameEnd = currentFile.find('.')
nameForMatte = currentFile[:mainNameEnd] + "_matte" + currentFile[mainNameEnd:]
fullPathMatteName = directoryName + "/" + nameForMatte
fm.createMatte(sourceFile, fullPathMatteName, matteHeight)
print("Just created: " + nameForMatte)
Etapa 6: testar os resultados em um compositor
Depois de inserir o código acima no seu arquivo autoroto.py, salve-o e execute o código novamente na linha de comando:
python "Path/to/your/program/autoroto.py"
Em seguida, entre no seu compositor favorito, use um chroma key para isolar cores específicas no matte e use-a para qualquer finalidade criativa ou utilitária que você tenha em mente.