tag:blogger.com,1999:blog-69197385569416260742024-03-05T11:22:23.069+01:00PFC- Control de aparcamiento3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-6919738556941626074.post-45283529442077088652010-02-09T22:02:00.005+01:002010-02-09T22:24:28.415+01:00POLIGONOSPara hacer el estudio de las imganes, lo primero que tenemos que hacer es delimitar las zonas donde se pueden aparcar, para realizar esto he dibujado un rectángulo donde si se puede aparcar.<br />Las funciones que he estudiado para son las siguientes como siempre de mas fácil y más dificil...<br /><br /><br />// Dibujar un cuadro con líneas rojas, de 1 de ancho entre (100,100) y (200,200)<br />cvRectangle(imgactual, cvPoint(100,100), cvPoint(200,200), cvScalar(255,0,0), 1);<br />// Dibujar un círculo en (100.100) con un radio de 20. Utilice las líneas verdes de ancho 1<br />cvCircle(img, cvPoint(100,100), 20, cvScalar(0,255,0), 1);<br />// Dibujar una línea roja de 1 de ancho entre (100,100) y (200,200)<br />cvLine(img, cvPoint(100,100), cvPoint(200,200), cvScalar(0,0,255), 1);<br /><br /><br />Una vez probadas estas funciones, no cumplian los requisitos porque no necesitaba un simple rectangulo sino un poligono, he pasado a la siguiente funcion con la que podemos conseguir cualquier poligono.<br /><br />CvPoint curve1[]={310,240,400,240,310,135,270,135};<br />CvPoint* curveArr[1]={curve1};<br />int nCurvePts[1]={4};<br />int nCurves=1;<br />int isCurveClosed=1;<br /> <br />cvPolyLine(img,curveArr,nCurvePts,nCurves,isCurveClosed,cvScalar(0,255,255),1);<br /><br />El resultado es el siguiente: <div> </div><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 301px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436356667618226194" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQPOFuUWYqD_5kbCEN83rRh2e6OmocsKDdseRh0Y4F390jLDJvoKVUUQghInJWZHW3FBa1Xx1rSoJRyjyY6HLsVDsLfbR_zUmiSch_xZjpeQDcv7-uyKZoAJo8kAW5mSVO5Ofz8Mm1N4/s400/rectangulo.jpg" /><br /><div></div>Los ejemplos para hacer los poligonos están sacados de:<br /><div><a href="http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html">http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html</a></div><div> </div>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com1tag:blogger.com,1999:blog-6919738556941626074.post-72421350948450854342010-02-09T19:24:00.001+01:002010-02-09T19:27:21.652+01:00VUELTA AL TRABAJOAqui estoy despues de mucho, pero que mucho tiempo, terminando asunto pendientes. Si aunque no os lo creais voy a continuar trabajando en el PFC.<br />Ahora mismo me estoy volviendo a poner al dia.<br />Pronto tendreis noticias mias, porque mis "vacaciones" han terminado.3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com1tag:blogger.com,1999:blog-6919738556941626074.post-56633726502022935512009-05-05T18:07:00.000+02:002009-05-05T18:20:59.757+02:00SUSTRACCION DE FONDO - Resta de imagenesPara detectar el movimiento de los coches tenemos que hacer una serie de operaciones con las imágenes ya hemos convertido las imágenes a grises ahora lo que vamos a hacer es dada una imagen inicial (o casi inicial) le vamos a ir restando las imágenes que capturamos paso a paso, con esto conseguimos la diferencia entre la imagen inicial y la imagen actual, y podremos ver si se ha producido o no un movimiento. SUSTRACCION DE FONDO<br /><br />Para facilitar la visulizacion de esto umbralizaremos la imagen, es decir, la pasaremos ha binario, conseguiremos una secuencia de imágenes que mostraremos en una ventana en blanco y negro.<br />Las funciones de opencvl que hemos utilizado en para realizar esto, además de las explicadas en post anteriores, las que he utilizado son:<br /><br /><strong>cvAbsDiff(gray,grayactual,res)</strong><br />Conseguimos la resta de la imágenes en valor absoluto las 3 imágenes tienes que tener las mismas características, a la imagen inicial (img), además, sólo tienen un canal (son grises)<br /><br />IplImage*gray;<br />gray = cvCreateImage(cvSize(img->width, img->height),img->depth,1);<br /><br />Antes para realizar la resta utilizaba la función cvSub, pero esta no hacia el valor absoluto de las imágenes y podía ser un problema más adelante.<br /><br /><strong>cvThreshold(img,binary,64,255,CV_THRESH_BINARY)</strong><br /><strong></strong><br />Con esto umbralizamos la imagen, la pasamos a binario.<br />Uno de los problemas que tenemos con este metodo es que nos encontramos ”Ruido” en las imágenes que obtenemos, por tanto lo siguiente que tenemos que realizar es una gaussiana o algo así de las imágenes obtenidas…<br /><br />void cvThreshold (const CvArr* src, CvArr* dst, double threshold, double maxValue, int thresholdType)<br />•Umbraliza la imagen según el método dado en thresholdType. y el umbral es threshold.<br />•P.ej., CV_THRESH_BINARY para binarizar:<br /> à C(x,y):= si A(x,y) > threshold entonces maxValue sino 0<br /><br />---------------------------------------- C O D I G O -------------------------------------------<br /><br />void ToGray (IplImage* img,IplImage *gray){<br />cvCvtColor(img, gray, CV_BGR2GRAY);<br />};<br /><br />void ToBinary (IplImage* img,IplImage *binary){<br />cvThreshold(img,binary,64,255,CV_THRESH_BINARY);<br />};<br /><br />int main (int argc, char **argv){<br />CvCapture* capture;<br />IplImage* img;<br />IplImage* imgactual;<br />IplImage* gray, * grayactual;<br />IplImage* res;<br />IplImage* binary;<br />int i;<br /><br />cvNamedWindow("Gris",1);<br />cvNamedWindow ("Binario",1);<br /><br />printf("Capture from camera\n");<br />//capture = cvCaptureFromCAM(0);<br /><br />capture = cvCaptureFromAVI("uni17.avi");<br />if(!cvGrabFrame(capture)){<br />printf( "Can't initialize video capturing\n\n" );<br />return -1;<br />}<br />/* if(!capture){<br />printf( "Can't initialize video capturing\n\n" );<br />return -1;<br />}*/<br />for (i=0;i<20;i++){ img="cvRetrieveFrame(capture);" i="0;i<20;i++)" img =" cvQueryFrame(" gray =" cvCreateImage(cvSize(img-">width, img->height),img->depth,1);<br />ToGray(img,gray);<br /><br />res = cvCreateImage(cvSize(img->width, img->height),img->depth,1);<br />imgactual=cvCreateImage(cvSize(img->width, img->height),img->depth,img->nChannels);<br />grayactual = cvCreateImage(cvSize(img->width, img->height),img->depth,1);<br />binary = cvCreateImage(cvSize(img->width, img->height),img->depth,1);<br /><br />for(;;){<br />imgactual=cvQueryFrame(capture);<br />if (!imgactual)<br />break;<br />ToGray(imgactual,grayactual);<br />cvAbsDiff(gray,grayactual,res);<br />ToBinary(res,binary);<br />cvShowImage("Gris", grayactual);<br />cvShowImage ("Binario",binary);<br />cvWaitKey(1);<br />//cvWaitKey(20);<br />}<br />cvDestroyAllWindows();<br />return 0;3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com2tag:blogger.com,1999:blog-6919738556941626074.post-40397395020023708412009-04-28T17:25:00.000+02:002009-04-28T17:28:13.194+02:00ESCALA DE GRISESEl siguiente paso para desarrollar el proyecto es averiguar si existe movimiento en las imágenes que recibimos o no. El primer paso que vamos a dar es convertir, las imágenes dadas en escala de grises. Para conseguir la hacer esto lo hemos realizado de dos maneras:<br /><br />He accedido a las características de la imagen. Las imágenes tienen unas características, por ejemplo, dado un tipo de datos iplImage (img) las características de la altura y al anchura vienen definidas como img->width y como img->height.<br /><br />He recorrido pixel a pixel la imagen con dos bucles anidados, he ido cambiando el color que muestra este por el gris. Para conseguir el gris he hallado la media de los 3 canales.<br /><br />void RGB2GRAY(IplImage *img){<br /> int i,j;<br /> double media;<br /> //printf("%d\n",img->height);<br /> //printf("%d\n",img->width);<br /> for(i=0;i<img->height;i++){<br /> for(j=0;j<img->width; j++ ){<br /> CvScalar s;<br /> s=cvGet2D(img,i,j); // obtenemos el valor en el píxel (i,j)<br /> //printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]);<br /> media=(s.val[0]+s.val[1]+s.val[2])/3;<br /> s.val[0]=media;<br /> s.val[1]=media;<br /> s.val[2]=media;<br /> cvSet2D(img,i,j,s);<br /> }<br /> }<br />};<br /><br />Otra manera para resolver esto es con la función predefinida por opencv cvcvtcolor.<br />Uso de la conversión OpenCV:<br /><br /> cvCvtColor(cimg,gimg,CV_BGR2GRAY);<br />El uso de un directo de la conversión:<br />for(i=0;i<cimg->height;i++) for(j=0;j<cimg->width;j++)<br />gimgA[i][j]= (uchar) (cimgA [i] [j]. b * 0,114 + <br />cimgA[i][j].g*0.587 + cimgA[i][j].r*0.299);<br />Convertir entre espacios de color:<br /> cvCvtColor(src,dst,code); / / src -> dst<br /> code = CV_<x>2<y><br /> <x>/<y> = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS<br />por ejemplo: CV_BGR2GRAY, CV_BGR2HSV, CV_BGR2Lab<br /><br />int main (int argc, char **argv){<br /> CvCapture* capture = 0;<br /> IplImage* img = 0;<br /> IplImage* gray;<br /> int num=0;<br /> <br /> cvNamedWindow( "Video", 1 );<br /> cvNamedWindow ("Gris",1);<br /><br /> printf("Capture from camera\n");<br /> capture = cvCaptureFromCAM(0);<br /> if(!capture){<br /> printf( "Can't initialize video capturing\n\n" );<br /> return -1;<br /> }<br /> img=cvQueryFrame( capture ); <br /> gray = cvCreateImage(cvSize(img->width, img->height),IPL_DEPTH_8U,1);<br /> for(;;){<br /> img=cvQueryFrame( capture );<br /> if (!img)<br /> break;<br /><br /> cvShowImage( "Video", img );<br /> //RGB2GRAY(img);<br /> cvCvtColor(img, gray, CV_BGR2GRAY);<br /> cvShowImage ("Gris",gray);<br /> cvWaitKey(1);<br /> num++;<br /> if (num==100){<br /> cvReleaseCapture(&capture);<br /> return 0;<br /> }<br /> }<br /> cvDestroyAllWindows();<br /> return 0;<br />}3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com2tag:blogger.com,1999:blog-6919738556941626074.post-23184580675686606592009-04-22T19:14:00.000+02:002009-04-22T19:33:04.622+02:00Mostra Video<div align="justify"><strong>FUNCIONES UTILIZDAS:</strong></div><div align="justify"><a name="decl_cvCaptureFromAVI"><strong>cvCaptureFromAVI</strong></a><strong><br /></strong>CvCapture* cvCaptureFromAVI( const char* filename ); </div><div align="justify">filename: Nombre del archivo AVI.<br />La función cvCaptureFromAVI asigna y inicializa la estructura CvCapture para leer la secuencia de vídeo desde el archivo de AVI especificado.<br />Después de que el asignado estructura ya no se utiliza más que deben ser puestos en libertad por cvReleaseCapture función.</div><div align="justify"><a name="decl_cvGrabFrame"><strong>cvGrabFrame</strong></a><strong><br /></strong>int cvGrabFrame (* CvCapture captura);<br />La función cvGrabFrame grava el frame de la cámara o AVI. El frame gravado se almacena internamente. El propósito de esta función es gravar el marco rápido lo que es importante para la sincronización en el caso de la lectura de varias cámaras simultáneamente. Para conseguir el acceso frame se debe llamar a cvRetrieveFrame.</div><div align="justify"> </div><div align="center"><strong>-------------------------------- CODIGO ----------------------------------- </strong></div><div align="center"><strong>----------------------------------------------------------</strong></div><div align="center"> </div><div align="justify"><br />#include <stdio.h><br />#include <stdlib.h><br />#include <cvaux.h><br />#include <highgui.h><br />int main (int argc, char **argv){<br />CvCapture *capture;<br />IplImage *img = 0;<br />int i=0,c;<br />capture = cvCaptureFromAVI("videoo.avi");<br />if(!cvGrabFrame(capture)){ // capture a frame<br />printf("Could not grab a frame\n");<br />printf("%p\n",capture);<br />getchar();<br />exit(-1);<br />}<br />cvNamedWindow( "VideoCaptura",1);<br />for(i=0;i<900;i++){<br />cvGrabFrame(capture);<br />img=cvRetrieveFrame(capture); // retrieve the captured frame<br />cvShowImage("VideoCaptura",img);<br />c = cvWaitKey(20);<br />}<br />cvQueryFrame(capture); // this call is necessary to get correct<br />// capture properties<br />int frameH = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);<br />int frameW = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);<br />int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);<br />int numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);<br />printf("\nFrame size= %i x %i FPS= %i Frame number= %i",frameW,frameH, fps, numFrames);<br />//Releasing the capture source:<br />cvReleaseCapture(&capture);<br />getchar();<br />//cvReleaseImage(&img);<br />cvDestroyWindow("VideoCaptura");<br />return 0;<br />}</div><div align="justify"> </div><div align="justify">Pd: Podria de donde he sacado el codigo pero no me acuerdo</div>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-8680895813017412552009-04-22T18:58:00.000+02:002009-04-22T19:11:16.348+02:00SOLUCION: Para mostrar video<span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">Después</span> de darme de tortazos con una pared una y otra vez, abriendo un <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">vídeo</span>. Sólo me planteaba una cosa, pero si he copiado un <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">código</span> de alguien que le funciona?¿? A un compañero mio le funciona este <span class="blsp-spelling-corrected" id="SPELLING_ERROR_3">código</span>?¿? QUE PASA?¿?<br />Bueno por aburrimiento y desesperación <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">encontré</span> un foro de <span class="blsp-spelling-error" id="SPELLING_ERROR_5">opencv</span> en español, y me pregunté si era a la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_6">única</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_7">cenutria</span> que no <span class="blsp-spelling-corrected" id="SPELLING_ERROR_8">podía</span> abrir el <span class="blsp-spelling-corrected" id="SPELLING_ERROR_9">vídeo</span>. ¡¡¡Pues NO solo más de uno y de dos!!!<br /><strong>LA <span class="blsp-spelling-corrected" id="SPELLING_ERROR_10">SOLUCIÓN</span></strong> INSTALAR UNOS SIMPLES Y MISEROS <span class="blsp-spelling-error" id="SPELLING_ERROR_11">CODECD</span>...<br />Con la boca abierta me dejo la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_12">solución</span> pero funcionó<br /><br />Foro <span class="blsp-spelling-error" id="SPELLING_ERROR_13">Opencv</span> en español:<br /><a href="http://tech.groups.yahoo.com/group/OpenCVenEspanol/">http://tech.groups.yahoo.com/group/OpenCVenEspanol/</a><br /><br /><span class="blsp-spelling-corrected" id="SPELLING_ERROR_14">Instalación</span> de <span class="blsp-spelling-error" id="SPELLING_ERROR_15">codec</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_16">ffdshow</span>:<br /><a href="http://www.free-codecs.com/FFDShow_download.htm">http://www.free-codecs.com/FFDShow_download.htm</a>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-39089170022140302162009-04-22T17:23:00.000+02:002009-04-22T19:13:58.087+02:00ABRIR WEBCAM<div align="justify"><span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">Después</span> haber escrito la ultima entrada del blog, decidí continuar con lo que funcionaba y "<span class="blsp-spelling-error" id="SPELLING_ERROR_1">rayarme</span>" con lo que no <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">funcionaba</span>, por eso volvimos a instalar la biblioteca 1.1.<br /><br />El primer programita que hice fue abrir la webcam y mostrar 1OO frames en una ventana, para que esto funcione he utilizado de opencv las siguientes librerias:<br /><strong></strong><br /><strong>cvNameWindow: </strong>crea la ventana<br />int cvNamedWindow (const char * name, int flags CV_WINDOW_AUTOSIZE =);<br />name: Nombre de la ventana que se utiliza como identificador de la ventana y aparece en el titulo de la ventana.<br />flags: caracteristicas de la ventana.<br />Creado ventanas son mencionados por sus nombres. Si la ventana con ese nombre ya existe, la función no hace nada.<br />---------------------------------------------------------------------------------- <strong>cvDestroyWindow</strong> Destruye una ventana<br />void cvDestroyWindow (const char * name);<br />name: Nombre de la ventana, para ser destruidos.<br />----------------------------------------------------------------------------------<br /><strong>cvWaitKey</strong> Espera a que se pulsa una tecla<br />int cvWaitKey (int delay = 0);<br />delay: retraso en milisegundos<br />Espera a que se pulse un tecla indefinidamente. Devuelve el código de la tecla pulsada o -1 si no se presiona una tecla en el tiempo especificado.<br />----------------------------------------------------------------------------------<br /><strong>cvShowImage </strong>Muestra la imagen en la ventana especificada<br />void cvShowImage( const char* name, const CvArr* image );<br />name: Nombre de la ventana.<br />imagen: Imagen que se muestra.<br />La función cvShowImage muestra la imagen en la ventana especificada. Si la ventana se ha creado con CV_WINDOW_AUTOSIZE entonces la imagen se muestra con su tamaño original, de lo contrario la imagen se escala para ajustarse a la ventana.<br />-----------------------------------------------------------------------------------<br /><strong>CvCapture</strong> Estructura de la captura de vídeo<br />typedef struct CvCapture CvCapture;<br />La estructura CvCapture no tiene interfaz pública y sólo se utiliza como parámetro para la captura de funciones de vídeo.<br />-----------------------------------------------------------------------------------<br /><a name="decl_cvCaptureFromCAM"><strong>cvCaptureFromCAM</strong></a><br />Asigna CvCapture estructura y se une a la cámara de vídeo<br />CvCapture* cvCaptureFromCAM( int index );<br />index índice de la cámara que se va a utilizara, si sólo hay una cámara o no importa que cámara se va a utilizar, se puede poner -1.<br />Cuando no se valla a utilizar mas estructura CvCapture debe ser libertada por la funcion cv ReleaseCapture.<br />------------------------------------------------------------------------------------<br /><a name="decl_cvReleaseCapture"><strong>cvReleaseCapture</strong></a><br />libera la estructura Capture, se utiliza la estructura es llamada con un ccvCaptureFromAVI o cvCaptureFromCAM.<br />--------------------------------------------------------------------------------------<br /><span style="color:#000000;"><strong></strong></span><a name="decl_cvQueryFrame"><span style="color:#000000;"><strong>cvQueryFrame</strong></span></a><br /><span style="color:#000000;">Grava y devuelve un cuadro de la cámara o AVI.</span><br /><span style="color:#000000;">IplImage* cvQueryFrame( CvCapture* capture );<br />capture captura<br />CvCapture proviene de la cámara o el archivo AVI.<br />La función cvQueryFrame</span><span style="color:#000000;"> grava un fotograma de la cámara o AVI y devuelve el puntero a la imagen. En realidad esta función pide sucesivamente cvGrabFrame</span><span style="color:#000000;"> y cvRetrieveFrame.</span><span style="color:#000000;"> La imagen devuelta no debe ser liberado por el usuario.</span><br /></div><p align="center">-----------------------CODIGO----------------------<br />-----------------------------------------</p><p align="justify"><br />#include <cvaux.h><br />#include <highgui.h><br />#include <stdio.h><br />#include <stdlib.h><br />int main (int argc, char **argv){<br />CvCapture* capture = 0;<br />IplImage* frame = 0;<br />int nframes=0;<br />cvNamedWindow( "VideoCaptura", 1 );<br />printf("Capture from camera\n");<br />capture = cvCaptureFromCAM(0);<br />if(!capture){<br />printf( "Can't initialize video capturing\n\n" );<br />return -1;<br />}<br />for(;;){<br />printf("%d\n",nframes);<br />frame=cvQueryFrame( capture );<br />if (!frame)<br />break;<br />cvShowImage( "VideoCaptura", frame );<br />cvWaitKey(1);<br />nframes++;<br />if (nframes==100){<br />cvReleaseCapture(&capture);<br />return 0;<br />}<br />}<br />cvDestroyWindow("VideoCaptura");<br />return 0;<br />}<br /><br /></p>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-87482530131443520872009-04-21T19:08:00.000+02:002009-04-21T19:17:18.054+02:00/dev/null ---> En el agujero negro<blockquote></blockquote>¿Que <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">pensáis</span> que he dejado el proyecto de lado?¿?<br />Pues no!!! Estoy intentando descubrir lo inexplicable.<br />Hice un <span class="blsp-spelling-error" id="SPELLING_ERROR_1">pequeñoo</span> programa que se encargaba de abrir la <span class="blsp-spelling-error" id="SPELLING_ERROR_2">webcam</span> del ordenador y mostrarla en una ventana... Pues cambie la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_3">librería</span> 1.1 por la 1.0 y ahora se ve todo negro, ni siquiera me funcionan los ejemplos del propio <span class="blsp-spelling-error" id="SPELLING_ERROR_4">OpenCv</span>, estos <span class="blsp-spelling-corrected" id="SPELLING_ERROR_5">también</span> se ven negros.<br />Cambiar de la 1.1 a la 1.0 fue porque le pasé un <span class="blsp-spelling-corrected" id="SPELLING_ERROR_6">código</span> un compañero, que trataba de abrir un pequeño <span class="blsp-spelling-corrected" id="SPELLING_ERROR_7">vídeo</span>. A mi compañero si le funcionaba pero a mi no y la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_8">única</span> diferencia eran la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_9">librerías</span>.<br /><br />PASADO:<br />- <span class="blsp-spelling-corrected" id="SPELLING_ERROR_10">Abría</span> la <span class="blsp-spelling-error" id="SPELLING_ERROR_11">Webcam</span> y lo mostraba en una ventana.<br />- Hice un <span class="blsp-spelling-corrected" id="SPELLING_ERROR_12">código</span> que le funcionaba a una amigo, el <span class="blsp-spelling-corrected" id="SPELLING_ERROR_13">podía</span> abrir un <span class="blsp-spelling-corrected" id="SPELLING_ERROR_14">vídeo</span> yo no<br /><br />PRESENTE:<br />- Tengo el <span class="blsp-spelling-error" id="SPELLING_ERROR_15">mismoo</span> <span class="blsp-spelling-corrected" id="SPELLING_ERROR_16">código</span> de antes pero no funciona nada<br /><br />FUTURO:<br />Tal vez me vuelva loca.3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com2tag:blogger.com,1999:blog-6919738556941626074.post-14232372484813627262009-03-26T19:56:00.000+01:002009-03-26T20:55:11.309+01:00ECLIPSE + OPENCV (2)<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglK5ipRrAkbzsKZMMWWUIBsOYEksi_xhUWkiRc9bJz4kZmNSZ5tojMydPNv3FOeeddH5k-Q_x8lHV8veHEDnRIQ9A1w16f3E9jU20oLvH8skx_hmQ26hFEY7RadF0pxXvp-AX9Ny4kYlg/s1600-h/lena.jpg"><img id="BLOGGER_PHOTO_ID_5317572900251594546" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglK5ipRrAkbzsKZMMWWUIBsOYEksi_xhUWkiRc9bJz4kZmNSZ5tojMydPNv3FOeeddH5k-Q_x8lHV8veHEDnRIQ9A1w16f3E9jU20oLvH8skx_hmQ26hFEY7RadF0pxXvp-AX9Ny4kYlg/s400/lena.jpg" border="0" /></a><br /><div><em>“Empezar es el comienzo de acabar”. (Anónimo)</em></div><br /><div><br />1. CREAR UN PROYECTO<br />File -> New -> C ++ Project -> Elegimos un nombre</div><br /><div>2. ANADIR LIBRERIAS:</div><div>Project -> Properties -> C/C++ Build -> Settings -><br />· GCC C++ Compiler -> Directories -> Include Paths (-I) -> Hay que añadir varias entradas, para realizarlo buscamos la ruta de lo que necesitamos que son:<br />“C:\Program Files\OpenCV\cv\include”<br />“C:\Program Files\OpenCV\cvaux\include”<br />“C:\Program Files\OpenCV\cxcore\include”<br />“C:\Program Files\OpenCV\otherlibs\highgui”<br />· MinGw C++ Linker -> Libraries -> (-l) -> Añadimos: cv, cvaux, cxcore y highgui<br />· MinGw C++ Linker -> Libraries -> (-L) -> Añadimos: “C:\Program Files\OpenCV\lib”.<br /><br />3. ANADIMOS EL NUEVO SOURCE FILE: Cuando le pongamos la extensión tendremos que tener en cuenta que tiene que ser .cpp</div><div><br />4. COPIAMOS Y PEGAMOS EL CODIGO<br />#include cv.h</div><div>#include highgui.h</div><div>#include stdio.h</div><div>char name0[]="lena.jpg"; // se define el fichero a cargar<br />int main(){<br />IplImage* imagen=NULL;//inicializo imagen<br />imagen=cvLoadImage(name0,1);// cargamos la imagen,<br />cvNamedWindow( "test", 1); // creamos la ventana de nombre "test"<br />cvShowImage( "test", imagen ); // representamos la imagen en la ventana<br />cvSaveImage("saliendo.jpg",imagen); // guardamos la imagen<br />cvWaitKey(0); // se pulsa tecla para terminar<br />cvDestroyAllWindows(); // destruimos todas las ventanas<br />cvReleaseImage(&imagen);<br />return 0;<br />}</div><div><br />5. GUARDAR, COMPILAR Y EJECUTAR: Disco -> Martillo -> Play<br />Para que funcione en este caso la imagen tiene que estar dentro del mismo directorio en el que estamos trabajando.</div><div></div><br /><div></div>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-51874527403536608362009-03-25T21:32:00.001+01:002009-03-25T21:33:05.478+01:00ECLIPSE + OPENCV (1)Por un lado tenemos los huevos y por otro los pollos, ¿Por qué todo el mundo piensa que no podemos tener los huevos y los pollos?¿?<br />¿El siguiente paso era realizar algo diferente?¿? Si todos cuando empezamos a programar empezamos con el “Hola Mundo” con que empezamos cuando empezamos a utilizar OpenCv?¿? Pues buscando y mirando por la red el ejemplo más difundido es…. VISUALIZAR LA FOTO DE <a href="http://es.wikipedia.org/wiki/Lenna_Sjooblom" target="_blank">LENNA SJOOBLOM</a> (EN REALIDAD, LENA SODERBERG).<br />1. Crear un proyecto.<br />2. Insertar las librerías.<br />3. Crear el nuevo fichero.<br />4. Guardar, compilar y ejecutar.<br />Estos puntos los explicaré más adelante, demasiada información por un día.<br />Saludos pa’ todos.3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-59348373744949483822009-03-25T21:00:00.000+01:002009-03-25T21:17:21.604+01:00LIBRERIAS DE OPENCVUpss!!! Esto parece que ya marcha, ¿cuál es el siguiente paso?¿? ¿Cómo suena un árbol si se cae en un bosque y nadie lo oye?¿?<br />Bueno como otra vez le echamos un vistazo a los blog de los compañeros…<br />“OPENCV: OpenCV es una <a title="Biblioteca (programación)" href="http://es.wikipedia.org/wiki/Biblioteca_(programaci%C3%B3n)"><span style="color:#000000;">biblioteca</span></a> libre de visión artificial originalmente desarrollada por <a title="Intel Corporation" href="http://es.wikipedia.org/wiki/Intel_Corporation"><span style="color:#000000;">Intel</span></a><span style="color:#000000;"> y publicada bajo licencia </span><a title="BSD" href="http://es.wikipedia.org/wiki/BSD"><span style="color:#000000;">BSD</span></a><span style="color:#000000;">, que permite que sea usada libremente para propósitos comerciales y de investigación con las condiciones en ella expresadas, en el 2002”.</span><br /><a href="http://es.wikipedia.org/wiki/OpenCV">http://es.wikipedia.org/wiki/OpenCV</a><br />· INSTALACION<br /><a href="http://sourceforge.net/projects/opencvlibrary/">http://sourceforge.net/projects/opencvlibrary/</a>. Pero con esta instalación me busco otra incongruencia con Roberto, él tiene una versión anterior a la mía.<br />¿Esto dará problemas más adelante?¿?3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-92080867958175001402009-03-25T20:41:00.000+01:002009-03-25T20:59:12.281+01:00INSTALACION DE ECLIPSE-WASCANA<p align="justify"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">Holaaaaa, hola..... (Esperando el eco)<br /><br />Realicé un cambio de la versión de eclipse para realizar el proyecto, comencé con la versión 2.0 del Gavab, pero no había tu tía ni si quiera para compilar un programa de Pascal.<br />Mi siguiente misión fue la investigación ¿pero cuántos eclipses hay?¿? Unos decían que uno, que otro... ¿que lo probase con todos?¿? Total que fui al laboratorio del proyecto y pedí opinión además de leer los foros de otros compañeros la decisión fue unánime WASCANA.<br />INSTALACION:<br /><a href="http://sourceforge.net/project/platformdownload.php?group_id=199497">http://sourceforge.net/project/platformdownload.php?group_id=199497</a><br />Lo bajé de esta página, ya sabéis los demás pasos, esperar la descarga e instalar.<br />PRUEBA:<br />No hay mejor que prueba que intentar hacer el hola mundo, pues como cabe esperar por aquí empecé.<br />Luego he seguido utilizándolo para hacer alguna practica de c de ssoo.<br />CONCLUSIÓN:<br />Tal vez lo cambie por eclipse 2.0 de gabav para tener la misma versión que mi compañero de proyecto...</span></p>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-85096970021962679982009-03-03T17:46:00.000+01:002009-03-03T17:57:26.738+01:00EL desconocido Eclipse<strong>03 - 03 - 09</strong><br /><br /><div align="justify">Bueno he empezado a releerme el blog de Antonito (Antonio Collazos), en la primera entrada pone el software que ha utilizado para la realización de su proyecto, uno de los programas que utiliza es el Eclipse del Gavab. </div><div align="justify">Una vez que he instalado el Eclipse estoy intentado crear proyectos compilarlos, ejecutarlos... Aunque sea de pascal y no tengan nada que ver con mi proyecto, pero me imagino que esto me dará una pequeña soltura a la hora de utilizarlo, no le voy a dedicar mucho tiempo, haré las practicas de EDI con esta herramienta.</div>3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0tag:blogger.com,1999:blog-6919738556941626074.post-39277577827532679642009-03-02T19:40:00.000+01:002009-03-31T18:52:01.505+02:00PRIMERA FASEEn este blog voy ha hacer una seguimiento de mi proyecto, controlar una aparcamiento con una camara estatica.<br />Mis tutores son Antonio Sanz y Juanjosé Pantrigo.<br />Bueno de momento es recopilar información y a dia de mañana empezaré3skhttp://www.blogger.com/profile/11118704066601643148noreply@blogger.com0