<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Olá Lista!!</DIV>
<DIV>&nbsp;</DIV>
<DIV>Estou meio Sumido o tempo esta escasso.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Fiz um sistema de monitoramente via Web Cam útil para locais onde ninguém pode entrar. Na realidade eu monitoro via qualquer web cam a ocorrencia de movimento se for encontrado eu disparo uma chamada via socket para o Asterisk.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>/*</DIV>
<DIV><BR>#&nbsp;&nbsp;&nbsp; _<BR>#&nbsp;&nbsp; |_)\_/<BR>#&nbsp;&nbsp; |_) |<BR>#<BR>#<BR>#&nbsp;&nbsp;&nbsp; ___&nbsp;&nbsp;&nbsp; _&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ___<BR>#&nbsp;&nbsp; | __|__| |___ _ _&nbsp;&nbsp; __| |___&nbsp; / __| ___ _&nbsp; _ _____ _<BR>#&nbsp;&nbsp; | _|/ _` / -_) '_| / _` / -_) \__ \/ _ \ || |_ / _` |<BR>#&nbsp;&nbsp; |___\__,_\___|_|&nbsp;&nbsp; \__,_\___| |___/\___/\_,_/__\__,_|</DIV>
<DIV>Conecta Uma Web Cam e fica a espera de qualquer movimento detectado e faz conexão com o Asterisk para iniciar Ligação ...</DIV>
<DIV>Intruções de Compilação:<BR>&nbsp;&nbsp;&nbsp; DevC++: Tools &gt; Compiler Options &gt; Add linker -lhighgui -lcv -lcxcore -lcvaux -lcvcam -lws2_32.<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Inserir todos os Includes do OpenCV e integrar ao compilador<BR>&nbsp;&nbsp;&nbsp; <BR>------------------------------------------------------------------------------------------------------------<BR>Dependências:<BR>&nbsp;&nbsp;&nbsp; windows -&gt; winsock2.h, WSDATA wsa_data, OpenCV.<BR>&nbsp;&nbsp;&nbsp; unix/linux -&gt; &lt;sys/types.h&gt;, &lt;sys/socket.h&gt;, &lt;arpa/inet.h&gt;, OpenCV.<BR>&nbsp;&nbsp;&nbsp; comuns -&gt; &lt;iostream&gt;, &lt;unistd.h&gt;, &lt;string.h&gt;, OpenCv<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Eng. Eder de Souza <BR>&nbsp;&nbsp;&nbsp; email: <A href="mailto:ederwander@gmail.com">ederwander@gmail.com</A>, <A href="mailto:ederwander@yahoo.com.br">ederwander@yahoo.com.br</A><BR>&nbsp;&nbsp;&nbsp;
 </DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp; Data: 17-07-2009<BR>&nbsp;&nbsp;&nbsp; Visão Computacional + Asterisk para monitoramento via Web Cam<BR>&nbsp;&nbsp;&nbsp; Monitoramento de áreas sem presença de movimentos, se alguma percepção de movimento for encontrado Servidor Asterisk Liga para comunicação ...<BR>&nbsp;&nbsp;&nbsp; <BR>*/</DIV>
<DIV>#include &lt;stdlib.h&gt;<BR>&nbsp;<BR>// OpenCV includes.<BR>#include &lt;cv.h&gt;<BR>#include &lt;highgui.h&gt;<BR>//</DIV>
<DIV>#include &lt;iostream&gt;<BR>#include &lt;process.h&gt;<BR>#include &lt;time.h&gt;<BR>#include &lt;unistd.h&gt;<BR>#include &lt;string.h&gt;<BR>#ifdef unix<BR>#include &lt;sys/types.h&gt;<BR>#include &lt;sys/socket.h&gt;<BR>#include &lt;arpa/inet.h&gt;<BR>#else<BR>#include &lt;winsock2.h&gt;<BR>#include &lt;windows.h&gt;<BR>#include &lt;winsock2.h&gt;<BR>#include &lt;stdio.h&gt;<BR>WSADATA wsa_data;<BR>#endif</DIV>
<DIV>&nbsp;</DIV>
<DIV>#define DEFAULT_BUFLEN 512</DIV>
<DIV>//IP e Porta para se Conectar ao Socket Perl Asterisk<BR>#define DEFAULT_PORT 8888<BR>#define IP "192.168.0.34"</DIV>
<DIV>//Intervalo para Iniciar a Ligação entre um movimento detectado<BR>//Valor em mili-Segundos<BR>#define intervalo 50000</DIV>
<DIV>using namespace std;<BR>long int cont = 0;</DIV>
<DIV>int Me_Liga() {</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //----------------------<BR>&nbsp;&nbsp;&nbsp; // Declarando e inicializando Variaveis.<BR>&nbsp;&nbsp;&nbsp; int iResult;<BR>&nbsp;&nbsp;&nbsp; WSADATA wsaData;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; SOCKET ConnectSocket;<BR>&nbsp;&nbsp;&nbsp; struct sockaddr_in clientService; </DIV>
<DIV>&nbsp;&nbsp;&nbsp; int recvbuflen = DEFAULT_BUFLEN;<BR>&nbsp;&nbsp;&nbsp; char *sendbuf = "Movimento Detectado\n";<BR>&nbsp;&nbsp;&nbsp; char recvbuf[DEFAULT_BUFLEN] = "";</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //----------------------<BR>&nbsp;&nbsp;&nbsp; // Inicializando o&nbsp; Winsock<BR>&nbsp;&nbsp;&nbsp; iResult = WSAStartup(MAKEWORD(2,2), &amp;wsaData);<BR>&nbsp;&nbsp;&nbsp; if (iResult != NO_ERROR) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("WSAStartup Falhou com erro: %d\n", iResult);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //----------------------<BR>&nbsp;&nbsp;&nbsp; // Criando o Socket para se conectar ao Servidor <BR>&nbsp;&nbsp;&nbsp; ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<BR>&nbsp;&nbsp;&nbsp; if (ConnectSocket == INVALID_SOCKET) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("socket Falhou com erro: %ld\n", WSAGetLastError());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //----------------------<BR>&nbsp;&nbsp;&nbsp; // IP e porta do Servidor Perl Asterisk para se conectar.<BR>&nbsp;&nbsp;&nbsp; clientService.sin_family = AF_INET;<BR>&nbsp;&nbsp;&nbsp; clientService.sin_addr.s_addr = inet_addr( IP );<BR>&nbsp;&nbsp;&nbsp; clientService.sin_port = htons( DEFAULT_PORT );</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //----------------------<BR>&nbsp;&nbsp;&nbsp; // Conecta ao server em perl com o Asterisk.<BR>&nbsp;&nbsp;&nbsp; iResult = connect( ConnectSocket, (SOCKADDR*) &amp;clientService, sizeof(clientService) );<BR>&nbsp;&nbsp;&nbsp; if (iResult == SOCKET_ERROR) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Conexao Falhou com erro: %d\n", WSAGetLastError() );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closesocket(ConnectSocket);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; //----------------------<BR>&nbsp;&nbsp;&nbsp; // Enviando mensagem para Servidor<BR>&nbsp;&nbsp;&nbsp; iResult = send( ConnectSocket, sendbuf, (int)strlen(sendbuf), 0 );<BR>&nbsp;&nbsp;&nbsp; if (iResult == SOCKET_ERROR) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("send() Falhou com erro: %d\n", WSAGetLastError());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closesocket(ConnectSocket);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; printf("Bytes envido: %d\n", iResult);</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // Mata a Conexao com o Socket<BR>&nbsp;&nbsp;&nbsp; iResult = shutdown(ConnectSocket, SD_SEND);<BR>&nbsp;&nbsp;&nbsp; if (iResult == SOCKET_ERROR) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("shutdown falhou com&nbsp; erro: %d\n", WSAGetLastError());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closesocket(ConnectSocket);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; // Resposta do socket<BR>&nbsp;&nbsp;&nbsp; do {</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( iResult &gt; 0 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Bytes recebido: %d\n", iResult);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if ( iResult == 0 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Conexao Encerrada\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("recebimento falhou com erro: %d\n", WSAGetLastError());</DIV>
<DIV>&nbsp;&nbsp;&nbsp; } while( iResult &gt; 0 );</DIV>
<DIV><BR>&nbsp;&nbsp;&nbsp; // limpando<BR>&nbsp;&nbsp;&nbsp; closesocket(ConnectSocket);<BR>&nbsp;&nbsp;&nbsp; WSACleanup();</DIV>
<DIV>&nbsp; <BR>}</DIV>
<DIV><BR>static void Thread1 (LPVOID lpParam){<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; </DIV>
<DIV>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cont=cont+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(intervalo);<BR>&nbsp;&nbsp;&nbsp; </DIV>
<DIV>&nbsp;&nbsp;&nbsp; printf("%d Contador \n", cont);<BR>&nbsp;&nbsp; <BR>&nbsp; if(cont &gt;= 1){<BR>&nbsp;&nbsp;&nbsp; cont=0;<BR>&nbsp;&nbsp;&nbsp; Me_Liga();<BR>&nbsp;&nbsp;&nbsp; <BR>}<BR>}</DIV>
<DIV><BR>int main()<BR>{<BR>&nbsp;//Cria uma janela<BR>&nbsp;cvNamedWindow("Eng_Eder_souza", CV_WINDOW_AUTOSIZE);<BR>&nbsp;<BR>&nbsp;//Cria objeto para captura.<BR>&nbsp;CvCapture* inputMovie;<BR>&nbsp;<BR>&nbsp;//Informa o modo de captura.<BR>&nbsp;&nbsp;&nbsp;&nbsp; inputMovie = cvCaptureFromCAM(0);</DIV>
<DIV><BR>&nbsp;<BR>&nbsp;//tamanho da imagem<BR>&nbsp;CvSize imgSize;<BR>&nbsp;imgSize.width = 320;<BR>&nbsp;imgSize.height = 240;<BR>&nbsp;<BR>&nbsp;//Imagens para usar no programa<BR>&nbsp;IplImage* greyImage = cvCreateImage( imgSize, IPL_DEPTH_8U, 1);<BR>&nbsp;IplImage* colourImage;<BR>&nbsp;IplImage* movingAverage = cvCreateImage( imgSize, IPL_DEPTH_32F, 3);<BR>&nbsp;IplImage* difference;<BR>&nbsp;IplImage* temp;<BR>&nbsp;IplImage* motionHistory = cvCreateImage( imgSize, IPL_DEPTH_8U, 3);<BR>&nbsp;<BR>&nbsp;//Retangulo nos objetos <BR>&nbsp;CvRect bndRect = cvRect(0,0,0,0);<BR>&nbsp;<BR>&nbsp;//Pontos para o retangulo<BR>&nbsp;CvPoint pt1, pt2;<BR>&nbsp;<BR>&nbsp;//Cria uma font para o objeto.<BR>&nbsp;CvFont font;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;</DIV>
<DIV>&nbsp;int inicio = 0;<BR>&nbsp;</DIV>
<DIV>&nbsp;//Buffer <BR>&nbsp;<BR>&nbsp;char Scores[60000];<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;//centraliza X do retangulo<BR>&nbsp;int avgX = 0;<BR>&nbsp;<BR>&nbsp;//Indica a primeira vez do loop de um frame<BR>&nbsp;bool first = true;<BR>&nbsp;</DIV>
<DIV>&nbsp;<BR>&nbsp;//Mantem proceços do Frame de pé<BR>&nbsp;for(;;)<BR>&nbsp;{<BR>&nbsp;&nbsp;//Pega o Frame da entrada de Video<BR>&nbsp;&nbsp;colourImage = cvQueryFrame(inputMovie);<BR>&nbsp;<BR>&nbsp;&nbsp;//Se nao existir mais framas cair fora do For<BR>&nbsp;&nbsp;if( !colourImage )<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;//Primeira vez para iniciar Imagem<BR>&nbsp;&nbsp;if(first)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;difference = cvCloneImage(colourImage);<BR>&nbsp;&nbsp;&nbsp;temp = cvCloneImage(colourImage);<BR>&nbsp;&nbsp;&nbsp;cvConvertScale(colourImage, movingAverage, 1.0, 0.0);<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;first = false;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;//else, faz a detecção de movimento <BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;cvRunningAvg(colourImage, movingAverage, 0.020, NULL);<BR>&nbsp;&nbsp;}<BR>&nbsp;<BR>&nbsp;&nbsp;//Converte a scala do
 video<BR>&nbsp;&nbsp;cvConvertScale(movingAverage, temp, 1.0, 0.0);<BR>&nbsp;<BR>&nbsp;&nbsp;//analiza o frame corrente<BR>&nbsp;&nbsp;cvAbsDiff(colourImage,temp,difference);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;//converte a imagem para grayscale.<BR>&nbsp;&nbsp;cvCvtColor(difference, greyImage, CV_RGB2GRAY);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;//Converte a imagem para black and white.<BR>&nbsp;&nbsp;cvThreshold(greyImage, greyImage, 70, 255, CV_THRESH_BINARY);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;cvDilate(greyImage, greyImage, 0, 18);<BR>&nbsp;&nbsp;cvErode(greyImage, greyImage, 0, 10);<BR>&nbsp;<BR>&nbsp;&nbsp;//acha o contador de imagens em video<BR>&nbsp;&nbsp;CvMemStorage* storage = cvCreateMemStorage(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CvSeq* contour = 0;<BR>&nbsp;&nbsp;cvFindContours( greyImage, storage, &amp;contour, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE );<BR>&nbsp;<BR>&nbsp;&nbsp;//processa cada movimento no frame
 corrente<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( ; contour != 0; contour = contour-&gt;h_next )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;//pega quadrado nos objetos em movimento<BR>&nbsp;&nbsp;&nbsp;bndRect = cvBoundingRect(contour, 0);<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;pt1.x = bndRect.x;<BR>&nbsp;&nbsp;&nbsp;pt1.y = bndRect.y;<BR>&nbsp;&nbsp;&nbsp;pt2.x = bndRect.x + bndRect.width;<BR>&nbsp;&nbsp;&nbsp;pt2.y = bndRect.y + bndRect.height;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sprintf(Scores, "Com Movimento");<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if(inicio == 0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Me_Liga();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inicio = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cont == 0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Inicia a Thread para o Intervalo de tempo para Ligar <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _beginthread( Thread1, 0, NULL );} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;//desenha um retangulo nos objetos em
 movimento.<BR>&nbsp;&nbsp;cvRectangle(colourImage, pt1, pt2, CV_RGB(255,0,0), 1);<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cvInitFont(&amp;font, CV_FONT_HERSHEY_SIMPLEX, 0.8, 0.8, 0, 2);<BR>&nbsp;&nbsp;cvPutText(colourImage, Scores, cvPoint(60, 200), &amp;font, cvScalar(0, 0, 300));<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;//Mostra o Frame.<BR>&nbsp;&nbsp;cvShowImage("Eng_Eder_souza", colourImage);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;cvWaitKey(10);<BR>&nbsp;&nbsp;sprintf(Scores, "Sem Movimento");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Apenas um Frame\n"); <BR>&nbsp;&nbsp;//Escreve o Frame no video de saida<BR>&nbsp;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;// Termina com a imagem o video e a
 janela<BR>&nbsp;cvReleaseImage(&amp;temp);<BR>&nbsp;cvReleaseImage(&amp;difference);<BR>&nbsp;cvReleaseImage(&amp;greyImage);<BR>&nbsp;cvReleaseImage(&amp;movingAverage);<BR>&nbsp;cvDestroyWindow("Eng_Eder_souza");<BR>&nbsp;<BR>&nbsp;cvReleaseCapture(&amp;inputMovie);</DIV>
<DIV>&nbsp;<BR>&nbsp;return(0);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>///#####FIM#####</DIV>
<DIV>&nbsp;</DIV>
<DIV>Agora Segue script em Perl que recebe o socket e dispara a Ligação via Asterisk este deve estar no servidor Asterisk executando no servidor Asterisk.</DIV>
<DIV>&nbsp;</DIV>
<DIV>exemplo "perl serverasteriskEder.pl 8888"</DIV>
<DIV>&nbsp;</DIV>
<DIV>#Eng. Eder de Souza<BR>#&nbsp;&nbsp;&nbsp; email: <A href="mailto:ederwander@gmail.com">ederwander@gmail.com</A>, <A href="mailto:ederwander@yahoo.com.br">ederwander@yahoo.com.br</A></DIV>
<DIV>#&nbsp;&nbsp;&nbsp; Data: 22-09-2008</DIV>
<DIV>use IO::Socket::INET;<BR>use strict;</DIV>
<DIV><BR>my $numero;<BR>my $arquivo;<BR>my $r;</DIV>
<DIV>my $port = shift<BR>&nbsp;&nbsp;&nbsp; or die"Falta o numero da porta\n";</DIV>
<DIV>my $socket = IO::Socket::INET-&gt;new('LocalPort' =&gt; $port,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Proto' =&gt; 'tcp',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Listen' =&gt; SOMAXCONN)<BR>&nbsp;&nbsp;&nbsp; or die "Can't create socket ($!)\n";<BR>print "Server listening\n";<BR>while (my $client = $socket-&gt;accept) {<BR>&nbsp;&nbsp;&nbsp; my $name = gethostbyaddr($client-&gt;peeraddr, AF_INET);<BR>&nbsp;&nbsp;&nbsp; my $port = $client-&gt;peerport;<BR>&nbsp;&nbsp;&nbsp; while (&lt;$client&gt;) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "[$name $port] $_";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 print $client "$.: $_";<BR>$r = $_;<BR>if( $r =~ /Movimento/) {</DIV>
<DIV>print $r,"\n";</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("echo '$r' &gt; /tmp/test.txt");</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open ($arquivo, '&lt;/var/lib/asterisk/agi-bin/telefones.txt');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (&lt;$arquivo&gt;) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $numero = $_;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $discar = "/var/spool/asterisk/".$numero.".call";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $arqdestino = "/var/spool/asterisk/outgoing/" ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open(EXTEN,"&gt;$discar");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "Channel: Sip/$numero\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "MaxRetries: 5\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "RetryTime: 60 \n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "WaitTime: 60
 \n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "Context: ital\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "Extension: 3300\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print EXTEN "Priority: 1\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(EXTEN);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("mv /var/spool/asterisk/*.call $arqdestino");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close $arquivo;</DIV>
<DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>}<BR>&nbsp;&nbsp;&nbsp; close $client<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or die "cliente encerrou conexao ($!)\n";<BR>}<BR>die "socket com problema ($!)\n";<BR></DIV>
<DIV>&nbsp;</DIV>
<DIV>###FIM###</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>[]'s</DIV>
<DIV>&nbsp;</DIV>
<DIV>Eng Eder de Souza</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></td></tr></table><br>


      <hr size=1>Veja quais são os assuntos do momento no Yahoo! + Buscados: <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/">Top 10</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/">Celebridades</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/">Música</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/">Esportes</a>