Processamento Digital de Imagens Aula 03 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br
Na aula passada vimos...
Na aula passada vimos... Unidade II - Básico sobre imagens; - O que é um pixel? - Visão geral sobre o sistema de coordenadas; - Acessando e manipulando pixels.
Na aula de hoje veremos...
Na aula de hoje veremos... Unidade III - Desenhando; - Linhas, Retângulos e Círculos.
Desenhando
Desenhando Utilizando o próprio NumPy com divisões de arrays na última aula nós colocamos um quadrado verde na nossa imagem.
Desenhando Utilizando o próprio NumPy com divisões de arrays na última aula nós colocamos um quadrado verde na nossa imagem.
Desenhando Utilizando o próprio NumPy com divisões de arrays na última aula nós colocamos um quadrado verde na nossa imagem. No entando, se quisessemos desenhar uma linha simples ou um círculo o NumPy não provê meios simples parar fazer isso, já que essa é uma biblioteca para processamento numérico.
Desenhando Mas como estamos utilizando também outras bibliotecas, não teremos grande problemas. O OpenCV provê de forma simpes, métodos para desenhar formas em uma imagem. Veremos o uso dos principais métodos: - cv2.line; - cv2.rectangle; - cv2.circle;
Desenhando OBS: Deve ficar claro que, conforme vimos na aula passada, podemos carregar imagens prontas do disco para nossos programas. Essas imagens, ao serem carregadas pelo OpenCV se tornam matrizes. Então temos que encará-las como tal. Ou seja: a) Tenho uma imagem; b) Carreguei ela no OpenCV; c) Não tenho mais uma imagem, mas sim uma matriz;
Desenhando OBS: Outro fato é que além de trabalharmos com imagens existentes podemos também criar as imagens utilizando o próprio NumPy. Já que para o OpenCV uma imagem nada mais é do que uma matriz e o NumPy é a biblioteca para manipulação de matrizes, podemos criar nossas matrizes e entregar para o OpenCV como nossa imagem.
- Desenhando Linhas
- Desenhando Linhas Crie o programa desenho.py
- Desenhando Linhas No programa desenho.py adicione o código:
- Desenhando Linhas No programa desenho.py adicione o código: Já conhecemos essas linhas: Estamos fazendo o importe das bibliotecas a serem utilizadas no programa. OBS: Repare que estamos dando um alias (apelido) para numpy chamando de np.
- Desenhando Linhas No programa desenho.py adicione o código: Estamos utilizando o numpy para criar uma matriz 300 x 300 com espaço para 3 canais (RGB), preenchida com zeros. Essa matriz será nossa imagem. O segundo parâmetro (dtype) informa qual é o tipo de dado que estaremos colocando na matriz. Conforme estudemos anteriormente, nossas imagens RGB possuem valores em um range de [0, 255]. Dessa forma, basta que usemos uma numeração 8-bit unsigned.
- Desenhando Linhas No programa desenho.py adicione o código: Variável para representar a cor verde. Lembrando que as imagens RGB (Red, Green e Blue) mas o OpenCV que trabalha com NumPy utiliza BGR (Blue, Green, Red). Então colocamos 0 para o blue, 255 para o green e 0 para o red. Nossa cor terá apenas a cor verde ativa.
- Desenhando Linhas No programa desenho.py adicione o código: Na linha 8, desenhamos uma linha no nosso canvas, iniciando o ponto (0,0) até o ponto (300, 300). Para desenhar uma linha com OpenCV utilizamos o método cv2.line, onde o primeiro parâmetro é a imagem na qual queremos desenhar a linha, o segundo é o ponto inicial e o terceiro o ponto final. O quarto parâmetro é a cor da linha. As linhas 9 e 10 já conhecemos.
- Desenhando Linhas Podemos executar nosso programa: No diretório onde o programa está salvo digite: python desenhando.py
- Desenhando Linhas Devemos ter então uma tela com uma linha verde desenhada iniciando no ponto (0,0) até (300,300):
- Desenhando Linhas Ainda no programa desenho.py adicione o código: Na linha 12 estamos criando uma variável para representar a cor vermelho. Na linha 14 estamos criando uma nova linha, porém iniciando no ponto (300, 0) e finalizando no ponto (0, 300). Estamos ainda utilizando a cor vermelho e adicionamos um quinto parâmetro que controla a espessura da linha, neste caso informamos que a espessura será de 3 pixels. O padrão é 1 pixel.
- Desenhando Linhas Ao executar novamente nosso programa, para cada vez que pressionarmos uma tecla o canvas será atualizado. Agora temos uma linha verde e uma vermelha.
- Desenhando Retângulos
- Desenhando Retângulos Ainda no programa desenho.py adicione o código: Para desenhar um retângulo utilizando o OpenCV usamos o método cv2.rectangle. O primeiro argumento passado é a imagem na qual queremos aplicar o desenho. O segundo argumento é o ponto de início e o terceiro é o ponto de finalização. Como quarto argumento informamos a cor do desenho.
- Desenhando Retângulos Agora além de uma linha verde e uma vermelha, temos também um retângulo verde.
- Desenhando Retângulos Ainda no programa desenho.py adicione o código: Podemos também adicionar um quinto parâmetro que controla a espessura da linha do retângulo a ser desenhado. No caso da linha vermelha estamos definindo uma espessura de 5 pixels. Por padrão é 1 pixel.
- Desenhando Retângulos Nossa imagem atualizada tem agora um retângulo vermelho com 5 pixels de espessura.
- Desenhando Retângulos Ainda no programa desenho.py adicione o código: Na linha 26 criamos a variável azul para armazenar a cor azul. Na linha 28 criamos um novo retângulo mas adicionamos um quinto parâmetro para controle da espessura. O valor negativo faz preencher internamente com a cor.
- Desenhando Retângulos Nossa imagem atualizada tem agora um retângulo azul preenchido.
- Desenhando Círculos
- Desenhando Círculos Ainda no programa desenho.py adicione o código: Na linha 32 estamos zerando nosso canvas. Na linha 34, criamos as variáveis para representarem o centro da imagem. Estamos pegando a altura do canvas e dividindo por 2 e a largura também do canvas e dividindo por 2. Estamos ainda utilizando o cast int(variavel) para converter qualquer que seja o resultado para inteiro. Na linha 36, criamos uma variável para representar a cor branca.
- Desenhando Círculos Ainda no programa desenho.py adicione o código: Na linha 38 utilizando um for que inicia em 0 e vai até 175, e incrementa de 25 em 25. Na linha 39, utilizamos o método cv2.circle do OpenCV para criar círculos. O primeiro parâmetro é o local onde queremos desenhar. O segundo parâmetro é o ponto onde nosso círculo será desenhando ao redor. O terceiro parâmetro é o raio do círculo a ser desenhado. O quarto parâmetro é a cor.
- Desenhando Círculos Nossa imagem atualizada tem agora vários círculos brancos.
Na linha 46, criamos o ponto central onde o círculo será criado ao redor com 2 valores entre 0 e 300 (x,y). Linhas, Retângulos e Círculos - Desenhando Círculos Ainda no programa desenho.py adicione o código: Na linha 43 utilizando um for que inicia em 0 e vai até 25. Na linha 44, criamos um raio dinâmico entre 5 e 200 com o numpy. Na linha 45, criamos uma cor dinâmica (3 valores entre 0 e 256 - BGR) com numpy.
- Desenhando Círculos Ainda no programa desenho.py adicione o código: Na linha 47 desenhamos o círculo, passando os dados aleatórios e com um quinto parâmetro para preencher com a cor.
- Desenhando Círculos Nossa imagem atualizada tem agora vários círculos com tamanhos, cores e posições aleatórios.
Processamento Digital de Imagens Aula 03 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br
Exercícios Escolha uma imagem na internet e baseado no que aprendemos sobre os desenhos de formas básicas com OpenCV, aplique alguns desenhos na imagem. Faça variações e experimente novas configurações para as formas criadas.