Tutorial de OpenCV para Tótós



Documentos relacionados
OpenCV.

Ferramentas Web, Web 2.0 e Software Livre em EVT

Configurar ligação VPN a rede do CIIMAR 2010

O AMBIENTE DE TRABALHO DO WINDOWS

Realizado por: Fábio Rebeca Nº6. Iuri Santos Nº8. Telmo Santos Nº23

EIC. Projecto I. Manual do Utilizador. Vídeo Vigilância Abordagem Open Source. Curso: Engenharia de Informática e Comunicações Ano Lectivo: 2005/2006

Hae Yong Kim. Cekeikon4 pode ser utilizado livremente tanto para fins não-lucrativos (acadêmicos e educacionais) como para fins comerciais, desde que:

Realizado por: Fábio Rebeca Nº6. Iuri Santos Nº8. Telmo Santos Nº23

[EIC0110] Concepção e Análise de algoritmos Trabalho de Grupo 2: Tema 4. Auto-Complete. Turma 3 Grupo 13. Maio de 2011

Tutorial de Instalação do OpenCV 2.3

Microsoft Office FrontPage 2003

Programação de Computadores I. Conhecendo a IDE Code::Blocks

ferramentas da imagem digital

Manual do ContentE CONTENTE. Editor de Conteúdos. Gilberto Pedrosa Biblioteca Nacional Digital

Edição de Modelo 39 em XML

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

Ferramentas Web, Web 2.0 e Software Livre em EVT

Manual do KSnapshot 2

Diferentes modos para visualizar gravações no Software HMS Client

Manual Processamento de Imagem. João L. Vilaça

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

1. Ligar o Computador Ambiente de Trabalho

Pesquisa e organização de informação

Introdução ao Processamento de Imagens com o IRIS Por Rodolfo Barros

Arranque do FrontOffice

Visão Artificial Para a Indústria. Manual do Utilizador

My Storage para Microsoft Windows* XP

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI

Como Começar? Criação Páginas. Etapas. Apresentação INTERNET

7.3. WINDOWS MEDIA PLAYER 12

Tecnologias da Informação e Comunicação

Neste tutorial irá criar uma animação simples com base num desenho do Mechanical Desktop.

APLICATIVOS GRÁFICOS (AULA 4)

Oficina de Construção de Páginas Web

WINDOWS. O Windows funciona como um Sistema Operativo, responsável pelo arranque do computador.

Oficina de Construção de Páginas Web

1 Code::Blocks Criação de projetos

Ferramentas Web, Web 2.0 e Software Livre em EVT

Interface para processamento de imagem em C++ utilizando Visual Studio.NET 2005

Conceitos importantes

Manual de Utilizador Externo Arquivo Digital. Santos, Tânia Última actualização:

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Capítulo 1: Introdução

Manual de Utilização COPAMAIL Criando e configurando a assinatura de . Zimbra Versão 8.0.2

ZS Rest. Manual Profissional. Instalação do Software. v2011

Instalação do Sistema Operativo Windows XP

Thales Trigo. Formatos de arquivos digitais

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Formatos de Imagens

Aplicações de Escritório Electrónico

Apresentações dinâmicas e Interativas online. Tutorial

Criação de Páginas Web - MS Word 2000

Tutorial Vmix - Streaming com Adobe Flash Media Live Encoder

Manual de Utilização. Site Manager. Tecnologia ao serviço do Mundo Rural

---- Webdbpro Manual de implementação

Instalação de Moodle 1

Tutorial exe elearning XHTML editor (versão 1.0x)

Como criar Gif s Animados. - Utilizando o Paint. e o Image Ready

A minha primeira página

Colocar em prática. Tópicos para aprender. Colocar em prática. Utilizar as aplicações da Microsoft Windows num quadro interactivo SMART Board

SYNCING.NET 2.0 Instalação & Configuração

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Realizado por: Fábio Rebeca Nº6. Iuri Santos Nº8. Telmo Santos Nº23

Guia e Utilização do Visual Studio 6.0

Ferramentas Web, Web 2.0 e Software Livre em EVT

Introdução ao Microsoft Windows

PRIMAVERA EXPRESS: Funcionalidades do Produto

C D. C) Coleções: é usada para organizar o conteúdo de áudio, vídeo e imagens em pastas, buscando facilitar a montagem do storyboard.

Faculdade de Ciências da Universidade de Lisboa CURSO DE GPS. Módulo x. (Aula Prática) Reliance - Ashtech. Suas Aplicações Em SIG.

Google Sites. A g r u p a m e n t o C a m p o A b e r t o /

Driver Eticadata Versão 1.0 de Português

OneDrive: saiba como usar a nuvem da Microsoft

NOÇÕES ELEMENTARES DE BASES DE DADOS

MANUAL DO UTILIZADOR

BACKUP S IBERWEB MANUAL DE INSTALAÇÃO. Manual de Instalação Backup s IBERWEB (Versão1.0) 2008 IBERWEB, LDA. Todos os direitos reservados.

Aplicações de Escritório Electrónico

Windows Live Movie Maker

FICHEIROS COM EXEMPLOS

Trabalhando com arquivos de som. Prof. César Bastos Fevereiro 2008

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

Acronis Servidor de Licença. Manual do Utilizador

Copyright Restinfor, Lda

Software de Edição e Output ADOBE ILLUSTRATOR E SILHOUETTE STUDIO. File > Open > Escolher a pasta ou local onde se encontre o ficheiro

Pág 31. UC Introdução a Informática Docente: André Luiz Silva de Moraes 1º sem Redes de Computadores. 5 Introdução ao uso do BrOffice Impress

Manual Captura S_Line

I. COMO FAZER O REGISTO NA PLATAFORMA MOODLE 3 II. COMO ACEDER (ENTRAR) NO MOODLE DA ESCOLA 1

Aplicações de Programação CNC/ISO com Microcomputador

Como Gerar documento em PDF com várias Imagens

Gerando enquêtes para uso em Pocket PCs V

Aplicações de Escritório Electrónico

Video Recording Manager export Wizard Version 1.0. Manual do software

Imagem digital. Unidade 3

Ferramentas Web, Web 2.0 e Software Livre em EVT

Poderá instalar o ZSRest APP diretamente através da Play Store do equipamento.

Configuração do Ambiente de Trabalho

Equipa PTE. Janeiro 2012

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

SAFT para siscom. Manual do Utilizador. Data última versão: Versão: Data criação:

Smart Laudos 1.9. A Forma Inteligente de Criar seus Laudos Médicos. Manual do Usuário

Transcrição:

Tutorial de OpenCV para Tótós Alexandra Ribeiro e Miguel Figueiredo Undergraduate Students Instituto Superior Técnico, Universidade Técnica de Lisboa, Portugal Objectivo: Este tutorial tem como objectivo colocar em papel as nossas descobertas mais recentes relativamente à biblioteca OpenCV, que iremos aplicar no nosso trabalho. OpenCV significa Intel Open Source Computer Vision Library e consiste numa colecção de funções C e algumas classes C++ que implementam alguns algoritmos bastante conhecidos, relativos ao processamento de imagem. Aqui encontrar-se-ão os passos necessários para conseguir aplicações básicas de processamento de imagem e o source code das mesmas. Pode efectuar o download desta biblioteca em: http://sourceforge.net/project/showfiles.php?group_id=22870 Para os exemplos demonstrados abaixo, foi utilizada a versão Beta 5 desta biblioteca, em framework.net, Visual Studio 2003 e utilizando DirectX 9.0. Primeiros passos Configuração do projecto: Para realizar um primeiro programa simples, utilizando o OpenCV, necessita de seguir os seguintes passos: 1. Abra o Visual Studio e abra um novo projecto C++, do tipo Console Application (.NET). Bastará para isto seguir, no menu principal, o caminho File New Project e clicar no tipo de aplicação pretendida, existente na pasta Visual C++ Projects. 2. Antes de começar a implementação do programa, terá de acrescentar nas propriedades do projecto, algumas bibliotecas necessárias para que sejam reconhecidas as funções de OpenCV que iremos utilizar. Para isso, aceda ao menu das propriedades, seguindo o caminho, no menu principal: Project project_name Properties. Aí, terá de seguir os seguintes passos:

Adicionar ao projecto as directorias referentes ao OpenCV (ver figura 1), que estarão no directório onde instalou esta biblioteca: o (path referente ao directório do OpenCV)\cvaux\include o (path referente ao directório do OpenCV)\cvaux\otherlibs\highgui o (path referente ao directório do OpenCV)\cxcore\include o (path referente ao directório do OpenCV)\cv\include Figura 1 - "Includes" necessários Adicionar directorias adicionais, referentes ao OpenCV (ver figura 2): o (path referente ao directório do OpenCV \bin o (path referente ao directório do OpenCV)\lib Figura 2 - Additional Libraries

Adicionar bibliotecas: o cxcore.lib o cv.lib o highgui.lib Neste momento o projecto está configurado para poder utilizar as funções que o OpenCV oferece. Passemos então aos exemplos. Exemplo 1 Load de uma imagem e respectiva visualização: Neste primeiro exemplo, iremos apenas realizar uma aplicação que permite ao utilizador visualizar uma imagem através da aplicação. Para isso, o primeiro passo consiste em fazer o load da imagem, guardando-a numa variável do tipo IplImage, conforme se segue: image = cvloadimage("./images/hand.jpg",-1); Esta função efectua o load da imagem, recebendo como argumentos o path da imagem e um valor inteiro, correspondente ao número de canais que a imagem irá ter: o >1 - a imagem resultante irá ter sempre 3 canais o 1 - a imagem resultante irá ter sempre 1 canal o <1 a imagem resultante irá ter número de canais dependentes do ficheiro, ou seja, consoante o número de canais no ficheiro loaded. Retorna o apontador para a imagem. Assim, a declaração da variável onde irá ser depositada esta informação será algo como: IplImage *image = 0; De realçar que os formatos de imagem suportados actualmente são:

Windows bitmaps - BMP, DIB; JPEG files - JPEG, JPG, JPE; Portable Network Graphics - PNG; Portable image format - PBM, PGM, PPM; Sun rasters - SR, RAS; TIFF files - TIFF, TIF. De seguida, iremos criar uma janela, na qual será apresentada a imagem, para isso: cvnamedwindow("contours",cv_window_autosize); O primeiro argumento é o nome da janela, o segundo é a flag relativa à forma como a janela se comporta,neste caso é autosize, ou seja adequa-se ao tamanho da imagem. Falta agora visualizar a imagem o que é feito através da função: cvshowimage("contours",image); Isto é feito depois de testar se o load da imagem retornou uma imagem válida e dentro de um ciclo for, que só será terminado caso a tecla Esc seja premida, o que permite ao utilizador sair da aplicação. Assim, este pedaço de código terá o seguinte aspecto: if(image){ for(;;){ cvshowimage("contours",image); if(cvwaitkey(10) >= 0){ break; Por último é necessário libertar os recursos utilizados, neste caso, a imagem e a janela onde foi apresentada. cvreleaseimage(&image); cvdestroywindow("contours"); Source Code Exemplo 1: http://web.tagus.ist.utl.pt/~alexandra.ribeiro/tfc/opencv/exemplo1-tutorialopencv.rar

Exemplo 2 aplicação de um algoritmo a uma imagem (Canny): Neste exemplo, iremos aplicar à imagem do exemplo anterior um algoritmo de processamento de imagem, conhecido como Algoritmo de Canny, que nos permite obter a visualização dos contornos da mesma. Por fim, iremos também salvar a imagem resultante da aplicação do algoritmo para um ficheiro. Depois de ter feito o load da imagem à qual queremos aplicar o algoritmo, temos de transformá-la numa imagem do tipo grayscale (excepto se a imagem já for deste tipo), dado que este algoritmo é aplicado a imagens que possuam apenas um canal. Para isto, é criada uma nova imagem, com o tamanho da imagem original e apenas com um canal (não esquecer de inicializar a respectiva variável, tal como foi feito com a imagem original). image_gray= cvcreateimage(cvsize(image->width,image->height),ipl_depth_8u,1); Os parâmetros são os seguintes: - tamanho da imagem (com o tamanho da imagem original) - depth (número de bits por pixel), neste caso unsigned integers, de 8 bits. - número de canais por pixel Será em image_gray que depositaremos o resultado da conversão de cor, do modelo RGB (com 3 canais) para grayscale, da seguinte forma: cvcvtcolor(image, image_gray, CV_RGB2GRAY); onde os parametros são a imagem original, a imagem que conterá o resultado da conversão e o tipo de conversão, respectivamente. Depois de obtida a imagem, com apenas um canal, podemos aplicar então o algoritmo de Canny, para a detecção de contornos. Para esse efeito, é criada uma nova imagem, onde irá ser depositado o resultado da aplicação do algoritmo de Canny. image_contours = cvcreateimage(cvsize(image_gray->width,image_gray->height), IPL_DEPTH_8U,image_gray->nChannels); Aplicaremos agora o algoritmo, passando como parâmetros a imagem grayscale, a imagem que guardará os contornos encontrados, o valor do primeiro threshold, o valor do segundo threshold e o aperturesize, que tem, por omissão, o valor 3. cvcanny(image_gray, image_contours, 0,255, 3); É então mostrado o resultado, que se encontra armazenado na variável image_contours. Por fim, é feita a libertação de recursos, tal como no exemplo anterior. Source Code Exemplo 2: http://web.tagus.ist.utl.pt/~alexandra.ribeiro/tfc/opencv/exemplo2-tutorialopencv.rar

Exemplo 3 Capturando Video: Para além de lidar com imagens, esta biblioteca permite aplicar o processamento às imagens de um video. Para que isto aconteça,temos, numa primeira fase, de capturar o video. Isto é possível através da seguinte função: CvCapture* capture = 0; capture = cvcapturefromcam(0); O parâmetro desta função refere-se ao index da câmara que está a ser utilizada para a captura de imagem (valores de 0 a 10), ou seja, é possível capturar imagem de várias câmaras, chamando a função com os índices respectivos. Neste caso, em particular, estamos a capturar video a partir de uma WebCam, mas seria possível também capturá-lo partindo de um ficheiro.avi, através da função cvcapturefromavi(nome_do_ficheiro). Depois deste passo e após ter inicializado uma janela, para visualizar o resultado, podemos aplicar uma função a cada frame do video, que será visualizada ao longo do mesmo. Assim, é necessário efectuar o grab de cada frame. Para que isto aconteça é necessário recorrer a duas funções da biblioteca OpenCV. if(!cvgrabframe(capture)){ break; frame = cvretrieveframe(capture); if(!frame){ break; A primeira função (cvgrabframe) faz o grab da frame, armazenando-a internamente, tendo apenas como objectivo o armazenamento rápido da respectiva frame, facto importante na sincronização entre câmaras, caso existam mais do que uma. Para aceder a esta frame é necessário recorrer à segunda função, cvretrieveframe, que retorna então a frame, sob a forma de uma IplImage. Seguidamente é criada uma cópia da imagem, para não alterar directamente a imagem capturada. if(!frame_copy){ frame_copy = cvcreateimage(cvsize(frame->width, frame->height), IPL_DEPTH_8U, frame->nchannels);

Este teste verifica se a origem da imagem a copiar tem a sua origem (como é normal) no canto superior esquerdo. Caso isso aconteça, a imagem pode ser copiada directamente. Caso contrário é aplicado uma rotação à imagem, em torno do eixo dos XX, de forma a ser copiada corretamente. if(frame->origin == IPL_ORIGIN_TL){ cvcopy(frame, frame_copy, 0); else{ cvflip(frame, frame_copy, 0); Por último poderíamos chamar uma função de aplicação de filtros, por exemplo. Seria algo como: applyfiltertoframe(frame_copy); Não esquecer de declarar os cabeçalhos desta função, no início do ficheiro! Source Code Exemplo 3: http://web.tagus.ist.utl.pt/~alexandra.ribeiro/tfc/opencv/exemplo3-tutorialopencv.rar Bibliografia: [1] OpenCVDocumentation http://www.cs.bham.ac.uk/resources/courses/robotics/doc/opencvdocs/ [2] OpenCV Tutorial, by R. Laganiere http://www.site.uottawa.ca/~laganier/tutorial/opencv+directshow/