├── LICENSE ├── README.md ├── labFrisos ├── README.md ├── exemplosFrisos │ ├── 1-translacao.png │ ├── 2-reflexaoHorizontal.png │ ├── 3-reflexaoVertical.png │ ├── 4-reflexaoHorizontalDeslizante.png │ ├── 5-rotação180.png │ ├── 6-reflexaoHorizontalEVertical.png │ └── 7-reflexaoHorizontalVerticalDeslizante.png ├── imagensEntrada │ ├── forma.png │ ├── panda.jpg │ └── seta.jpg └── main.py └── visao-computacional ├── README.md ├── camera.py ├── formas.jpeg └── requirements.txt /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Elas@Computação 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # intro-opencv 2 | 💻 Workshop introdutório de OpenCV 3 | -------------------------------------------------------------------------------- /labFrisos/README.md: -------------------------------------------------------------------------------- 1 | # Produção de Frisos a partir de uma imagem usando Python 2 | ## com uso de Numpy e Opencv 3 | 4 | 5 | ## Objetivos 6 | Se familiarizar rapidamente com o uso das bibliotecas Numpy e Opencv a partir da simples tarefa de construção de frisos de uma imagem 7 | 8 | ## Informações gerais sobre o mini-projeto 9 | Você deve estar se perguntando sobre o que é um friso 10 | de uma imagem, certo? 11 | 12 | Então vamos lá... 13 | 14 | ### Frisos 15 | 16 | Os frisos caracterizam-se pela existência da repetição de um motivo ao longo de uma direção. Assim 17 | o friso prolonga-se infinitamente em uma direção previamente definida. (Por fins didáticos iremos trabalhar com a repetição finita de uma imagem - padrão: 6 repetições) 18 | 19 | Dentre os Frisos que iremos trabalhar destacam-se: 20 | 21 | * Apenas translações 22 | * Translações e Reflexão horizontal 23 | * Translações e Reflexão Vertical 24 | * Translações e Reflexões deslizantes 25 | * Translações e Rotações de ordem 2 (meia volta) 26 | 27 | ### Python 28 | 29 | Linguagem que permite alta produtividade e tem fácil legibilidade. Python é uma linguagem que foi criada para produzir código bom e fácil de manter de maneira rápida. 30 | 31 | #### Opencv 32 | * [Documentação OpenCV](https://docs.opencv.org/master/) 33 | 34 | #### Numpy 35 | * [Documentação Numpy](https://numpy.org/doc/stable/index.html) 36 | 37 | 38 | ## Contato 39 | * [Github](https://github.com/annabeatrizlucena) 40 | * E-mail: anna.lira@ccc.ufcg.edu.br 41 | 42 | -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/1-translacao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/1-translacao.png -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/2-reflexaoHorizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/2-reflexaoHorizontal.png -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/3-reflexaoVertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/3-reflexaoVertical.png -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/4-reflexaoHorizontalDeslizante.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/4-reflexaoHorizontalDeslizante.png -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/5-rotação180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/5-rotação180.png -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/6-reflexaoHorizontalEVertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/6-reflexaoHorizontalEVertical.png -------------------------------------------------------------------------------- /labFrisos/exemplosFrisos/7-reflexaoHorizontalVerticalDeslizante.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/exemplosFrisos/7-reflexaoHorizontalVerticalDeslizante.png -------------------------------------------------------------------------------- /labFrisos/imagensEntrada/forma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/imagensEntrada/forma.png -------------------------------------------------------------------------------- /labFrisos/imagensEntrada/panda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/imagensEntrada/panda.jpg -------------------------------------------------------------------------------- /labFrisos/imagensEntrada/seta.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/labFrisos/imagensEntrada/seta.jpg -------------------------------------------------------------------------------- /labFrisos/main.py: -------------------------------------------------------------------------------- 1 | # Importando as bibliotecas Opencv(cv2) e numpy(nomeada como np) 2 | import cv2 3 | import numpy as np 4 | 5 | # Antes de editar faça uma cópia(fork) desse repositório em sua conta 6 | # Todas os exemplos das representações dos 7 tipos de frisos vistos aqui estão presentes no pacote "exemploFrisos" 7 | 8 | ''' 9 | Uso da Opencv no projeto: 10 | imread 11 | imwrite 12 | flip (0: reflete horizontalmente | 1: reflete verticalmente | -1: reflete horizontalmente e verticalmente) 13 | 14 | Uso da Numpy no projeto: 15 | hstack 16 | vstack 17 | ''' 18 | 19 | 20 | #Lendo uma imagem(presente no pacote "imagensEntrada" e armazenando na variável img 21 | #Para que os frisos fiquem visivelmente melhores, é esperado que a imagem seja assimentrica tanto em relação ao eixo x quanto em relação ao eixo x 22 | 23 | img = cv2.imread('imagensEntrada/forma.png') 24 | 25 | #1: Translação (sucessivas repetições de um motivo) 26 | 27 | 28 | #2: Reflexão Horizontal + Translação (sucessivas repetições de um motivo + reflexão em relação ao eixo X) 29 | 30 | 31 | #3: Reflexão Vertical + Translação (Reflexão de um motivo em relação ao eixo Y, com sucessivas repetições) 32 | 33 | 34 | ''' 35 | Escrevendo uma nova imagem, tendo como base as dimensões da imagem de entrada 36 | Atribuímos a ela a cor branco, em RGB (255,255,255) 37 | ''' 38 | 39 | img2 = cv2.imread('imagensEntrada/forma.png') 40 | for y in range(0, img2.shape[0]): 41 | for x in range(0, img.shape[1]): 42 | img2[x,y] = (255, 255, 255) 43 | 44 | 45 | #4: Reflexão Horizontal + Deslizante (reflexão em relação ao eixo X com deslizes) 46 | 47 | #5: Rotação 180 (rotação de 180 graus de um motivo com sucessivas repetições) 48 | 49 | #6: Reflexão Horizontal + Vertical (Reflexão simultânea de um motivo em relação aos eixos X e Y) 50 | 51 | 52 | #7: Reflexão Horizontal + Vertical + Deslizante (Acrescenta deslizes ao tipo de friso anterior) 53 | -------------------------------------------------------------------------------- /visao-computacional/README.md: -------------------------------------------------------------------------------- 1 | # Ideia inicial sobre Visão Computacional - Algumas instruções! 📋 2 | 3 | ## Parte inicial (com GoogleColab) 🌐 4 | 5 | Praticamente todo o conteúdo dessa parte está contido no notebook do GoogleColab neste [link](https://drive.google.com/drive/folders/1MtmQpWrycsldZXCx1Oeh4ZGTJUrn42m-?usp=sharing). Vocês podem acessá-lo e fazer uma cópia dele para trabalhar. Para isso, basta seguir os passos: 6 | 7 | Arquivo > Salvar uma cópia no Drive 8 | 9 | Feito isso, podem se dirigir até a cópia e trabalhar livremente com ela! 10 | 11 | Uma dica é conectar o ambiente de execução antes de começar a executar as células do notebook. Para isso, basta clicar em "Conectar" na parte superior direita da página. 12 | 13 | Para quem nunca utilizou um ambiente semelhante ao Colab, segue um vídeo legal para se ambientar neste [link](https://www.youtube.com/watch?v=Ai9qn9YII78)! 14 | 15 | ## Para o desafio (rodando um projeto na sua máquina) 💻 16 | 17 | O desafios que deixei proposto foi a adaptação do código do nosso estudo de caso para um script .py que vai identificar as formas em uma captura de vídeo, porém isso só é possível de realizar na sua máquina, pois o OpenCV não consegue acessar a câmera do seu computador utilizando um ambiente na web. 18 | 19 | Para isso, deixei um projeto pré-configurado aqui nesse material! Segue um passo a passo para que vocês possam executá-lo nas suas máquinas pessoais. 20 | 21 | > É importante que, caso vocês queiram desenvolver o código em paralelo ao mini-curso, sigam essas configurações previamente! 22 | 23 | ### 1. Precisaremos de um ambiente virtual... 24 | 25 | É importante o hábito de criar um ambiente virtual para seus projetos! Desse modo, quando outra pessoa for utilizar ou contribuir com o código poderá utilizar o mesmo ambiente que você desenvolveu, incluindo versionamento das bibliotecas utilizadas e também da linguagem, além de ser muito mais simples para instalar os requerimentos e consertar possíveis problemas no projeto! 26 | 27 | Para criar o ambiente virtual em sua máquina, siga os passos indicados na própria documentação do Python neste [link](https://docs.python.org/pt-br/3.8/tutorial/venv.html#creating-virtual-environments). 28 | 29 | > Não esqueçam de verificar se estão dentro do diretório do projeto clonado! 30 | 31 | #### Algumas informações adicionais 32 | 33 | - Versão do Python utilizada: 3.8.5 34 | 35 | ### 2. Instalando as bibliotecas necessárias 36 | 37 | Observe aqui que na raiz do projeto temos um arquivo "requirements.txt". Nesse arquivo temos todas as dependências necessárias para executar o projeto em sua máquina. 38 | 39 | Após criar o ambiente virtual você poderá instalar tudo que for necessário utilizando apenas o comando (se você utiliza o VSCode, pode fazê-lo no terminal da IDE): 40 | 41 | Para Linux/MacOS/Windows 42 | ``` 43 | pip install -r requirements.txt 44 | ``` 45 | 46 | > Não esqueçam de verificar se estão dentro do diretório do projeto clonado! 47 | 48 | ### 3. Mão na massa! 👩‍💻 49 | 50 | Depois de ter os passos acima executados, estamos prontas para trabalhar e se divertir com OpenCV! Espero que gostem! 51 | 52 | Ah, por último e não menos importante, contribuam com seus códigos desenvolvidos após o mini-curso aqui nesse repositório, postem no LinkedIn, Twitter, compartilhe sua experiência! (E me marca que eu quero ver!) 53 | -------------------------------------------------------------------------------- /visao-computacional/camera.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | # Identificar a câmera 4 | 5 | # Condição de captura 6 | 7 | # Loop para realizar a captura das nossas imagens em sequência 8 | 9 | # Capturar um frame 10 | # Mostrar o frame capturado 11 | 12 | -------------------------------------------------------------------------------- /visao-computacional/formas.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elasComputacao/intro-opencv/4b9615c9284f669b81a4a54ae38721ced2ec302f/visao-computacional/formas.jpeg -------------------------------------------------------------------------------- /visao-computacional/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy==1.20.1 2 | opencv-python==4.5.1.48 3 | --------------------------------------------------------------------------------