< Return to Video

vimeo.com/.../935097022

  • 0:08 - 0:11
    E chegou a hora
    de pôr a mão na massa
  • 0:11 - 0:16
    e entender como que a gente consegue
    usar essas ferramentas computacionais
  • 0:16 - 0:18
    para codificar uma imagem
  • 0:18 - 0:22
    e fazer o processamento
    dessa imagem de forma digital.
  • 0:22 - 0:24
    E a ferramenta que a gente
    vai utilizar é a OpenCV.
  • 0:24 - 0:26
    OpenCV nos dias atuais
  • 0:26 - 0:29
    é uma das ferramentas
    de processamento de imagem
  • 0:29 - 0:32
    mais difundidas no mercado.
  • 0:32 - 0:35
    Você pode até trabalhar
    com outras ferramentas,
  • 0:35 - 0:39
    mas, fatalmente, você vai ter
    que fazer alguma interface
  • 0:39 - 0:42
    usando os recursos
    que a ferramenta da OpenCV,
  • 0:42 - 0:46
    essa biblioteca que a gente vai trabalhar,
    consegue te oferecer.
  • 0:46 - 0:50
    Não só essa biblioteca, vamos
    trabalhar também com o Matplotlib.
  • 0:50 - 0:52
    Essa biblioteca, Matplotlib,
  • 0:52 - 0:56
    a gente utiliza bastante
    para plotar gráficos.
  • 0:56 - 0:58
    E a gente vai ver como
    que a gente pode usar essa ferramenta,
  • 0:58 - 1:03
    essa biblioteca, para exibir imagens.
  • 1:03 - 1:06
    Sem mais delongas,
    vamos botar a mão na massa.
  • 1:06 - 1:11
    Eu estou no meu ambiente Visual Code,
    utilizando o Jupyter,
  • 1:11 - 1:14
    para poder escrever
    os nossos notebooks.
  • 1:14 - 1:19
    E aqui, eu já tenho instalado
    e configurado o meu OpenCV.
  • 1:19 - 1:23
    Eu vou executar ele.
  • 1:23 - 1:26
    Como que a gente vai trabalhar
    com o nosso OpenCV?
  • 1:26 - 1:28
    Utilizando o Jupyter,
    a gente vai fazer o seguinte.
  • 1:28 - 1:31
    A gente vai dar um import da CV2.
  • 1:31 - 1:35
    Então, o OpenCV, essa biblioteca,
    a gente chama ela,
  • 1:35 - 1:38
    a gente importa ela
    com o apelido de CV2.
  • 1:38 - 1:42
    A gente vai passar um caminho
    para uma imagem.
  • 1:42 - 1:45
    Eu sugiro que você tenha a imagem
    já salva no mesmo diretório,
  • 1:45 - 1:48
    onde você tem
    esse Jupyter Notebook rodando.
  • 1:48 - 1:53
    Porque isso vai facilitar na hora
    de fazer o método inRead,
  • 1:53 - 1:57
    que é. imageRead,
    onde a gente vai ler uma imagem.
  • 1:57 - 1:59
    Então, ele é um método da CV2.
  • 1:59 - 2:04
    Depois, a gente passa esse caminho
    da imagem que a gente vai trabalhar.
  • 2:04 - 2:06
    A imagem que a gente
    vai trabalhar é alena.png.
  • 2:06 - 2:11
    E a gente vai mandar
    exibir essa imagem.
  • 2:11 - 2:16
    Para exibir essa imagem,
    a gente usa o recurso de cv2.inShow,
  • 2:16 - 2:19
    ou imageShow.
  • 2:19 - 2:21
    A gente define uma janela.
  • 2:21 - 2:24
    Então, ele vai abrir
    um pop-up aqui para a gente.
  • 2:24 - 2:29
    E a gente fala o que a gente quer
    que apareça nesse pop-up,
  • 2:29 - 2:31
    que é a nossa imagem.
  • 2:31 - 2:32
    Então, a gente passa aqui
    o argumento da imagem
  • 2:32 - 2:36
    que a gente acabou de carregar.
  • 2:36 - 2:40
    Aqui no finalzinho,
    eu coloquei um delayzinho.
  • 2:40 - 2:43
    Dentro da OpenCV,
    a gente tem esse comando aqui,
  • 2:43 - 2:45
    esse recurso chamado WaitKit.
  • 2:45 - 2:48
    Onde ele fica esperando
    a gente pressionar uma tecla.
  • 2:48 - 2:54
    No caso, a tecla que ele está esperando
    eu pressionar é a tecla Esc.
  • 2:54 - 2:58
    Quando der esse Esc, ele vai
    fechar para a gente o nosso código.
  • 2:58 - 3:02
    Vamos rodar o nosso comando
    e ver a nossa imagem aparecer.
  • 3:02 - 3:04
    Executei aqui a nossa célula.
  • 3:04 - 3:08
    Ele está executando o nosso comando.
  • 3:08 - 3:09
    Quando a gente dá Alt + Tab,
  • 3:09 - 3:13
    apareceu aqui a nossa modelo
    chamada Lena.
  • 3:13 - 3:15
    Para a gente fechar essa janela,
  • 3:15 - 3:17
    a gente tem que dar Esc
    no nosso código.
  • 3:17 - 3:22
    Repare que ele fechou o comando
    que a gente executou no notebook.
  • 3:22 - 3:25
    Mas a tela não fechou.
  • 3:25 - 3:28
    E aqui ele fica travado.
  • 3:28 - 3:33
    Então, da forma como a gente
    tenta exibir a imagem
  • 3:33 - 3:37
    usando o Jupyter Notebook,
    não é recomendável.
  • 3:37 - 3:41
    Então, a gente fecha esse processo.
  • 3:41 - 3:45
    Funciona muito bem
    se a gente criar um arquivo Python.
  • 3:45 - 3:49
    Então, se a gente tiver o nosso arquivo
    aqui, o mesmo código,
  • 3:49 - 3:53
    só que agora rodando aqui
    no nosso arquivo .py,
  • 3:53 - 3:57
    a gente pode executar ele.
  • 3:57 - 3:59
    Ele vai abrir a nossa imagem.
  • 3:59 - 4:03
    E aí sim, como um arquivo Python,
    ele não vai travar.
  • 4:03 - 4:06
    A gente consegue executar
    ele numa boa.
  • 4:06 - 4:09
    Então, minha sugestão,
  • 4:09 - 4:11
    e a sugestão de quem trabalha
    com visão computacional
  • 4:11 - 4:13
    e processamento de imagem,
  • 4:13 - 4:17
    é a gente não usar
    para exibir o WinShow
  • 4:17 - 4:20
    quando a gente estiver rodando
    com o Jupyter.
  • 4:20 - 4:25
    A gente vai usar a biblioteca
    do Matplotlib para realizar essa tarefa.
  • 4:25 - 4:29
    Então, a gente começa importando
    o OpenCV da mesma forma.
  • 4:29 - 4:32
    A gente vai importar
    também o Matplotlib.
  • 4:32 - 4:33
    Só que do Matplotlib,
  • 4:33 - 4:36
    a gente não vai importar toda
    a biblioteca do Matplotlib.
  • 4:36 - 4:39
    A gente vai importar apenas
    o que a gente precisa
  • 4:39 - 4:43
    para exibir essas imagens,
    que é o Pyplot.
  • 4:43 - 4:47
    Para não ficar um comando muito grande,
    é habitual e comum
  • 4:47 - 4:53
    a gente dar um apelido
    para Matplotlib.pyplot, que é PLT.
  • 4:53 - 4:59
    Então, toda hora que você vê PLT
    ponto alguma coisa,
  • 4:59 - 5:05
    a gente está fazendo referência
    ao Matplotlib.pyplot.
  • 5:05 - 5:08
    Vamos executar.
  • 5:08 - 5:11
    Eu vou dar um restart no meu kernel.
  • 5:11 - 5:13
    Ele vai restartar aqui.
  • 5:13 - 5:19
    Eu vou zerar ele, porque ele crashou
    quando a gente executou da última vez.
  • 5:19 - 5:22
    Beleza.
  • 5:22 - 5:23
    Executei minha célula.
  • 5:23 - 5:31
    Importei aqui no meu kernel
    do Python o OpenCV e o Matplotlib.
  • 5:31 - 5:38
    Agora, a gente tem um comandinho
    mágico, que é o %MATplotlib.inline.
  • 5:38 - 5:43
    Esse comando é bem importante,
    a gente não pode esquecer,
  • 5:43 - 5:48
    porque é com ele que a gente vai conseguir
    executar o nosso notebook
  • 5:48 - 5:52
    e fazer com que as imagens apareçam
    não como um pop-up,
  • 5:52 - 5:57
    mas como um item dentro
    da nossa janela do notebook.
  • 5:57 - 5:59
    Vamos executar ele.
  • 5:59 - 6:00
    A gente consegue rodar ele
  • 6:00 - 6:03
    e a gente vai fazer
    tudo exatamente igual.
  • 6:03 - 6:08
    Só que, note que agora,
    na hora de exibir a imagem de saída,
  • 6:08 - 6:11
    a gente vai usar o PLT.
  • 6:11 - 6:14
    Então, PLT.inShow é o comando
    que a gente vai usar
  • 6:14 - 6:16
    para poder exibir a nossa imagem.
  • 6:16 - 6:20
    Depois do InShow,
    a gente vai dar o PLT.show,
  • 6:20 - 6:22
    que é para ele exibir essa imagem.
  • 6:22 - 6:27
    Então, note que agora a gente já
    conseguiu carregar a nossa imagem.
  • 6:27 - 6:30
    Executamos a nossa célula
    aqui do Júpiter
  • 6:30 - 6:32
    e não tivemos problema.
  • 6:32 - 6:35
    A única coisa que está
    um pouquinho esquisita aqui,
  • 6:35 - 6:38
    e você vai concordar comigo,
  • 6:38 - 6:42
    é que a lenda
    está um pouco azulada, né?
  • 6:42 - 6:45
    Ela não tem essa cor naturalmente.
  • 6:45 - 6:46
    Alguma coisa aconteceu.
  • 6:46 - 6:49
    Então, o que aconteceu?
  • 6:49 - 6:50
    É que no início dos anos 2000,
  • 6:50 - 6:53
    quando a OpenCV foi escrita
    e foi lançada,
  • 6:53 - 6:59
    ela foi padronizada com
    a seguinte concatenação de canal.
  • 6:59 - 6:59
    BGR.
  • 6:59 - 7:06
    Anos depois, quando o Matplotlib foi
    lançado, ele foi pensado, escrito
  • 7:06 - 7:09
    e estruturado com a seguinte
    concatenação de cor.
  • 7:09 - 7:12
    R, G e B.
  • 7:12 - 7:14
    Note aí que a gente tem
    uma inversão dos canais.
  • 7:14 - 7:19
    Na OpenCV,
    o primeiro canal de cor é azul.
  • 7:19 - 7:21
    Já para o Matplotlib,
    é o canal vermelho.
  • 7:21 - 7:24
    No nosso dia a dia,
    a gente está muito mais habituado
  • 7:24 - 7:28
    a trabalhar com a escala de cor RGB.
  • 7:28 - 7:32
    Mas, quando a gente mescla esses
    dois mundos, essas duas bibliotecas,
  • 7:32 - 7:36
    a gente tem que prestar atenção
    se a gente está trabalhando
  • 7:36 - 7:38
    com as cores em BGR ou em RGB.
  • 7:38 - 7:43
    Então, o que a gente precisa fazer
    para deixar a lenda menos azul
  • 7:43 - 7:47
    e trabalhar com essas duas bibliotecas
    de forma coerente,
  • 7:47 - 7:49
    é fazer a conversão de cor.
  • 7:49 - 7:54
    A gente já tem na biblioteca um método
    para isso, que chama CVTColor.
  • 7:54 - 7:56
    Vamos ver como que a gente aplica
    ele na nossa imagem
  • 7:56 - 8:00
    para poder fazer a impressão
    e a exibição correta da lenda.
  • 8:00 - 8:01
    Aqui, a gente não mudou nada.
  • 8:01 - 8:04
    A gente continua carregando
    a lenda da mesma forma.
  • 8:04 - 8:09
    Só que o nosso método
    agora da CV2 é o CVTColor.
  • 8:09 - 8:12
    A gente tem dois argumentos
    para ele.
  • 8:12 - 8:14
    O primeiro é a imagem de entrada.
  • 8:14 - 8:15
    A imagem que a gente está passando
  • 8:15 - 8:18
    é a imagem que a gente
    acabou de carregar.
  • 8:18 - 8:23
    O segundo argumento é a forma
    como a gente vai converter essa cor.
  • 8:23 - 8:27
    A gente tem uma cor que a gente
    acabou de carregar com a OpenCV.
  • 8:27 - 8:28
    Essa imagem,
  • 8:28 - 8:33
    ela está no padrão de cor BGR
    e a gente quer converter ele para, então,
  • 8:33 - 8:36
    true RGB.
  • 8:36 - 8:41
    Então, usando o CVTColor e passando
    para ele que a imagem original
  • 8:41 - 8:47
    está em BGR e a gente quer converter
    ela para RGB, esse método CVTColor,
  • 8:47 - 8:52
    ele vai devolver uma imagem
    que vai ser em RGB.
  • 8:52 - 8:55
    Com a imagem RGB,
    não tem problema nenhum.
  • 8:55 - 8:59
    Agora a gente vai conseguir exibir
    a lenda da sua cor
  • 8:59 - 9:01
    e da forma que deveria ser.
  • 9:01 - 9:05
    Fizemos nosso Hello World
    do mundo de visão computacional
  • 9:05 - 9:06
    e processamento de imagens.
  • 9:06 - 9:11
    Já entendemos que a OpenCV
    é o benchmark do mercado
  • 9:11 - 9:15
    e é a forma como as maiores empresas
    que trabalham nesse segmento,
  • 9:15 - 9:19
    nesse nicho, usam para poder fazer
    o processamento de imagem.
  • 9:19 - 9:22
    Uma ferramenta muito útil quando
    a gente está utilizando a OpenCV
  • 9:22 - 9:26
    para estruturar os nossos códigos
    usando o Jupyter
  • 9:26 - 9:30
    é usar o Matplotlib
    para exibir essas imagens
  • 9:30 - 9:32
    de forma mais simplificada.
  • 9:32 - 9:34
    Agora que você já entendeu
    como que a gente consegue
  • 9:34 - 9:37
    carregar uma imagem
    e converter ela de cor,
  • 9:37 - 9:40
    fica como desafio você carregar
    e importar uma imagem sua.
  • 9:40 - 9:43
    Que tal você tirar uma foto
    e importar ela dentro da OpenCV?
Title:
vimeo.com/.../935097022
Video Language:
Portuguese, Brazilian
Duration:
09:47

Portuguese, Brazilian subtitles

Revisions Compare revisions