Katna automatiza a tarefa chata e propensa a erros de extração de chaves/melhores quadros de vídeos, compactação de vídeo e tarefa manual demorada de corte e redimensionamento de imagens usando ML.
Resumindo, você pode considerar o uso da biblioteca Katna se tiver as seguintes tarefas:
Você tem vídeos/vídeos que deseja compactar para um tamanho menor. (por exemplo, você tem um vídeo com, digamos, 1 GB de tamanho, mas deseja compactá-lo o menor possível.)
Você tem imagens que deseja redimensionar de forma inteligente para uma resolução desejada. (por exemplo, 500x500, 1080p (1920x1080) etc.)
Você deseja extrair um corte de proporção específica, por exemplo, 4:3 de sua imagem/imagens de entrada. (por exemplo, obter um corte de proporção de 1:1 a partir de uma imagem com resolução de 1920x1080 (imagem de proporção de 16:9))
Você deseja redimensionar um vídeo para uma proporção específica, por exemplo, 16:9 (Paisagem), digamos para 1:1 (quadrado). Observe que este recurso é atualmente experimental e precisa de compilação e configuração adicionais da biblioteca google mediapipe.
Katna é dividido em dois módulos
Este módulo lida com as tarefas de extração de quadros-chave e compactação de vídeo.
Os quadros-chave são definidos como quadros representativos de um fluxo de vídeo, os quadros que fornecem o resumo mais preciso e compacto do conteúdo do vídeo.
Extração de quadros e critérios de seleção para extração de quadros-chave
A compactação de vídeo é feita usando a biblioteca ffmpeg. Detalhes sobre o que podem ser lidos na seção do módulo Katna.video_compressor.
Desde a versão 0.8.0 do Katna, estamos estendendo os recursos de redimensionamento inteligente para vídeos com a ajuda do projeto Mediapipe do Google. Para saber mais sobre isso, consulte a documentação [Video Smart Resize using Katna] (https://katna.readthedocs.io/en/latest/understanding_katna.html#katna-video-resize). Observe que este recurso é um recurso experimental opcional. E pode estar sujeito a remoção/modificações em versões posteriores. Além disso, você também precisa instalar a biblioteca Mediapipe do Google, especialmente o binário autoflip para que isso funcione. Consulte o link para saber como instalar e configurar o mediapipe para ser usado com o Katna.
Este módulo lida com as tarefas relacionadas ao corte inteligente e redimensionamento de imagens.
O recorte inteligente da imagem ocorre de forma que o módulo identifique a melhor parte ou a área onde alguém foca mais e interprete essa informação ao recortar a imagem.
Extração de culturas e critérios de seleção
Semelhante ao módulo de imagem Smart crop Katna suporta o recurso de redimensionamento de imagem inteligente . Dada uma imagem de entrada, ele pode redimensionar a imagem para a resolução desejada com redimensionamento simples se a proporção for a mesma para a imagem de entrada e de destino. Se a proporção for diferente do redimensionamento inteligente da imagem, primeiro cortará o maior corte de boa qualidade na resolução alvo e depois redimensionará a imagem na resolução alvo. Isso garante o redimensionamento da imagem sem distorcer a imagem de entrada. Observe que se a proporção da imagem de entrada e saída não for a mesma, Katna image_resize pode levar a alguma perda de conteúdo da imagem
Formatos de arquivo de vídeo e imagem suportados #########################################
Todos os principais formatos de vídeo como .mp4, .mov, .avi etc e formatos de imagem como .jpg, .png, .jpeg etc são suportados.
Mais recursos de seleção estão em pipeline de desenvolvimento
Instale o git
Instale Anaconda ou Miniconda Python
Terminal aberto
Clone o repositório aqui https://github.com/keplerlab/Katna.git
Mude o diretório para o diretório onde você clonou seu repositório
$cd path_to_the_folder_repo_cloned
Crie um novo ambiente anaconda se você estiver usando a distribuição anaconda python
conda create --name katna python=3.7
source activate katna
Execute a configuração:
python setup.py install
Desde a versão 0.4.0 do Katna, o módulo de vídeo Katna é otimizado para usar multiprocessamento usando o módulo de multiprocessamento python. Devido às restrições de multiprocessamento no Windows, para importação segura do módulo principal no sistema Windows, certifique-se de que o “ponto de entrada” do programa esteja encapsulado em name == ' main ': como segue:
from Katna.video import Video
if __name__ == "__main__":
vd = Video()
# your code
consulte https://docs.python.org/2/library/multiprocessing.html#windows para obter mais detalhes.
Se a imagem de entrada for de tamanho muito grande (maior que 2.000x2.000), poderá levar muito tempo para executar o corte inteligente automático. Se você encontrar esse problema, considere alterar down_sample_factor do padrão 8 para valores maiores (como 16 ou 32). Isso diminuirá significativamente o tempo de processamento.
Se você vir o erro "AttributeError: o módulo 'cv2.cv2' não tem atributo 'saliência'". Desinstale opencv-contrib executando o comando "python -m pip desinstalar opencv-contrib-python" e instale-o novamente executando o comando
python -m pip install opencv-contrib-python
Se você vir "FileNotFoundError: arquivo frozen_east_text_detection.pb não encontrado". Abra o shell python e siga os comandos abaixo.
from Katna.image_filters.text_detector import TextDetector
td = TextDetector()
td.download()
No Windows, certifique-se de que o anaconda tenha direitos de administrador se estiver instalando com o anaconda, pois ele falha com a permissão de gravação ao instalar alguns módulos.
Se você receber "RuntimeError: Nenhum exe ffmpeg foi encontrado". Instale o ffmpeg em seu sistema e/ou defina a variável de ambiente IMAGEIO_FFMPEG_EXE ou FFMPEG_EXE como o caminho do seu binário ffmpeg. Normalmente o ffmpeg é instalado usando o pacote imageio-ffmpeg, verifique a pasta imageio_ffmpeg-*.egg dentro da pasta site-packages , deve haver um arquivo ffmpeg dentro da pasta binaries, verifique se este arquivo tem permissão de leitura/executável adequada definida e, adicionalmente, defina seu caminho para a variável de ambiente.
Há um problema conhecido de vazamento de memória no Katna versão 0.8.2 e inferior, ao executar a extração de quadros-chave de vídeo em massa no Python versão 3.6 e 3.7. Este é um bug de multiprocessamento observado apenas no Python 3.6 e 3.7. E foi corrigido no Katna versão 0.9 e superior. Se você estiver executando o código de extração de quadro-chave em um grande número de vídeos e enfrentando problemas de memória, solicite que você atualize sua versão do Katna para a versão 0.9 ou superior. Se você ainda quiser usar uma versão mais antiga do Katna, considere atualizar sua versão python para 3.8 ou superior.
Adicionamos uma estrutura de gravação para processar dados do módulo Katna Video and Image. Esta versão também corrige o problema de vazamento de memória relatado por este e este problema.
video.extract_video_keyframes e video.extract_video_keyframes_from_dir requerem objeto gravador adicional. Por padrão, KeyFrameDiskWriter está disponível para uso no módulo Katna.writer. A estrutura do escritor pode ser estendida com base no requisito.
image.crop_image e image.crop_image_from_dir requerem objeto gravador adicional. Por padrão, ImageCropDiskWriter está disponível para uso no módulo Katna.writer. A estrutura do escritor pode ser estendida com base no requisito.
Consulte a documentação para os exemplos atualizados aqui: Link
Esta versão de correção de bug corrige este problema: Link
Corrigido um problema em que, em casos raros, vídeos divididos usando ffmpeg não eram legíveis e lançavam exceção Link
Adicionado suporte experimental para corte/redimensionamento automático de vídeos usando o exemplo de código Mediapipe Autoflip do Google.
Corrigido bug onde cortes de especificação incorretos eram retornados pelos métodos image_module crop_image e crop_image_from_dir.
Adicionado suporte para compactação de vídeo no módulo Katna.video.
Adicionado suporte para redimensionamento inteligente de imagens no módulo Katna.image.
Na versão 0.5.0, alteramos o nome de algumas das funções públicas internas do módulo Katna.video usado para extração de quadros-chave,