Pular para o conteúdo

HairCAPTURE – Utilizando captura de vídeo em C++ (sem segredos)

Quando iniciei as pesquisas em V4L (Vídeo for Linux), percebi que não faria sentido (em termos comerciais) um profissional estudar todos os conceitos para desenvolver tal aplicações. Sendo assim trabalhei em um projeto paralelo para facilitar os meus futuros projetos de manipulação de vídeo ao vivo e acabei disponibilizando este trabalho para a comunidade.
Alessandro de Oliveira Faria (A.K.A. CABELO) CABELO
Hits: 31.853 Categoria: Linux Subcategoria: Gráficos/Imagens
  • Indicar
  • Impressora
  • Denunciar

Parte 3: Compilando e testando os exemplos do pacote de desenvolvimento

No pacote hairCAPTURE-devel inseri alguns exemplos de fácil aprendizado. Neste capítulo encontraremos os comandos passo-a-passo para a compilação dos exemplos.

Em primeiro lugar, mudaremos para a pasta onde se encontram os códigos-fonte de exemplo:

# cd /usr/share/hairCAPTURE

Se você estiver utilizando o pacote a partir do código-fonte, entre na pasta abaixo:

$ cd install/hairCAPTURE/example

Agora, com o comando make, compile os exemplos:

$ make
g++ -c example01.cpp
g++ -c example02.cpp
g++ -c example03.cpp
g++ -c example04.cpp
g++ -c example05.cpp
g++ example01.o -o example01 -lSDL -lSDL_ttf -lSDL_gfx -lhairCAPTURE
g++ example02.o -o example02 -lSDL -lSDL_ttf -lSDL_gfx -lhairCAPTURE
g++ example03.o -o example03 -lSDL -lSDL_ttf -lSDL_gfx -lhairCAPTURE
g++ example04.o -o example04 -lSDL -lSDL_ttf -lSDL_gfx -lhairCAPTURE
g++ example05.o -o example05 -lSDL -lSDL_ttf -lSDL_gfx -lhairCAPTURE

Pronto. Agora, basta executar os exemplos:

$ ./example05

Fundamentando conceitos de programação


Abaixo, a listagem do código-fonte que utilizarei para explicar o conceito lógico de funcionamento. Mais uma vez menciono que críticas e sugestões devem ser enviadas por e-mail.

# include <stdio.h>
#include <fstream>
#include <sstream>
#include <string>
#include <unistd.h>

#include <funcoesCAPTURE.h>

using namespace std;
extern char **environ;

int main(int argc, char *argv[])
{
   std::string texto;

   HAIR::CAPTURE video1;

   video1.Open();

   video1.InitVideo();

   video1.LoadBMP("tux.bmp");

   video1.Line(20,215,320,215,0,255,0);

   video1.WriteText(20,220,"Use the Force, READS THE SOURCE!");

   video1.Show();

   std::cout<<"Enter a message:";    std::cin>>texto;

   video1.WriteText(20,220,"Press (Q) for exit the video");

   video1.WaitForVideo();

   return 0;
}

  • HAIR::CAPTURE video1: esta linha instancia a classe de vídeo em memória com o nome de video1;
  • video1.Open(): este método inicializa o dispositivo de vídeo captura, define as características como tamanho do buffer, resolução máxima permitida, número de cores e outras propriedades do hardware;
  • video1.InitVideo(): nesta linha inicializamos uma janela para exibição do vídeo usando as funções da biblioteca SDL;
  • video1.LoadBMP("tux.bmp"): agora carregaremos a imagem tux.bmp. Esta imagem contém o logotipo do tux-jedi. O fundo da imagem de cor rosa é utilizado como transparência da imagem;
  • video1.Line(20,215,320,215,0,255,0): Line é um método que desenha uma linha nas coordenadas inicial e final especificadas. Os três últimos argumentos são as cores no formato RGB;
  • video1.WriteText(20,220,"Use the Force, READS THE SOURCE!"): já o WriteText escreve um texto nas coordenadas especificadas;
  • video1.Show(): o método Show cria uma thread para exibir o vídeo ao vivo;
  • video1.WaitForVideo(): agora esta linha aguarda a thread do vídeo ao vivo ser destruída para finalizar a aplicação.

A minha intenção é tornar fácil do desenvolvimento de aplicações que manipulam vídeo for Linux . O projeto agradece colaborações de todos os tipos: tradução para outros idiomas, testes, layout e outros...

"Conquistas materiais nos proporcionam prazeres momentâneos. Satisfação eterna são para os homens que se tornam o que sonham ser... "

Em vista disto, torne-se um JEDI.

Não use DROGAS, Use LINUX!!!

   1. Introdução
   2. Download e instalação
   3. Compilando e testando os exemplos do pacote de desenvolvimento

KDE-Edu e Gcompris: Software Livre a serviço da educação

MainActor: Edição de vídeo profissional (Adobe Premiere) em Linux

OpenVino: Inteligência Artificial em tempo real sem GPU

GCJ – Conhecendo o compilador Java Livre

PEAGLE: Serviço Web de busca indexada em seu servidor local

jKiwi: Simulando pintura de cabelo e novo visual com Software Livre

Blender para todos! - Parte I

Da criança problema até o abacaxi

Experimentando o XGL/Compiz no Mandriva 2007

Avidemux - Corrigindo arquivos com "crash"

#1 Comentário enviado por removido em 13/10/2005 - 11:47h
mestre cabelo.... sempre aprontando!!!
#2 Comentário enviado por HunterNetBR em 13/10/2005 - 18:02h
Ae amigo,

Muito boa a idéia... tentei fazer aqui mas deu não... ta dando erro na hora de compilar os exemplos...

g++ -c example01.cpp
example01.cpp:8:28: funcoesCAPTURE.h: No such file or directory
example01.cpp: In function `int main(int, char**)':
example01.cpp:19: error: `HAIR' undeclared (first use this function)
example01.cpp:19: error: (Each undeclared identifier is reported only once for
each function it appears in.)
example01.cpp:19: error: parse error before `::' token
example01.cpp:22: error: `video1' undeclared (first use this function)
example01.cpp:36: error: `cout' undeclared in namespace `std'
example01.cpp:37: error: `cin' undeclared in namespace `std'
make: *** [capture] Error 1

Oque pode estar acontecendo?
#3 Comentário enviado por CABELO em 13/10/2005 - 18:28h
me parece que foi instalado apenas o pacote hairCAPTURE-devel

o pacote hairCAPTURE tbm deve ser instalado.
#4 Comentário enviado por HunterNetBR em 13/10/2005 - 18:37h
ops... instalei o pacote hairCAPTURE-devel agora deu o erro:

root@hunternet:~/haircapture/usr/share/hairCAPTURE# make
g++ -c example01.cpp
In file included from example01.cpp:8:
/usr/include/funcoesCAPTURE.h:21:35: SDL/SDL_gfxPrimitives.h: No such file or directory
/usr/include/funcoesCAPTURE.h:22:30: SDL/SDL_rotozoom.h: No such file or directory
make: *** [capture] Error 1
#6 Comentário enviado por cristianodts em 05/10/2006 - 10:49h
Olha Cabelo tem lido os seus artigos. Fantástico!!! Meus parabéns. Eu estou a cada dia que passa desde de 1998 que o Linux é um software de futuro, tem revolucionado e vai crescer cada vez mais, e bom quando se tem profissionais, amigos como vc para podermos compartilhar informações sobre este universo grande do linux.. valeu... um abraço... qq coisa podermos trocar informação...
#7 Comentário enviado por maurin em 13/02/2008 - 11:47h
Gostaria de realizar uma pergunta.

Tenho uma distro Fedora 8 64 bits em minha maquina.

Como nao existe um rpm para essa distro para a lib do cabelo, tentei compilar o fonte para gerar o .so

Verifiquei que a versão do Fedora 64 utiliza uma versão antiga do SDL_gfx, que não possui muitos dos headers da versão atualizada, alguns inclusive utilizados nesta lib como SDL_gfxPrimitives.h.

Alguem ja tentou utilizar ou compilar esta lib no fedora 64?
Existe alguma solução possivel para esse problema?


Agradeço a atenção!

Contribuir com comentário

Entre na sua conta para comentar.