elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / reproducir en escala de grises con comando cvWriteFrame en openCV en: 17 Enero 2011, 19:28 pm
Me podeis orientar para repoucir un video en escala de grises con este comando. Estoy buscando y no encuentro nada. ¿Se puede realizar esta opcion?

Yo creo el writer con el siguiente comando:

writer = cvCreateVideoWriter( nomVideoDest, CV_FOURCC_DEFAULT,fps, size, 1 );

pero a la hora de ir capturando los frames en la ventana del video en escala de grises se queda la imagen parada y no reproduce nada.

Lo reproduzco hasta que pulse que se pulse ESC o acabe el video

tempsEntreCuadres = 1000.0 /(double)fps;

 do{
  frame = cvQueryFrame( capture );
  if( !frame ) break;
  cvShowImage( sFinestra, frame );
  cvShowImage( sDestino, imgDst );
  cvWriteFrame( writer, frame );
  cvWriteFrame( writer2, imgDst );



  c = cvWaitKey( tempsEntreCuadres );
 }while ( (c != 27) AND (frame != NULL));
2  Programación / Programación C/C++ / error bad flag en: 17 Enero 2011, 11:10 am
Hola quiero hacer un programa en Windows con Codeblocks utilizando las librerias de Opencv que reproduzca dos videos a la vez, uno en RGB y el otro en escala de grises.Cuando yo compilo el programa se genera el ejecutable y las 2 ventanas para reproducir los videos se abren pero no se llega a reproducir nada y aparece el siguiente error en una ventana:

" bad flag(parameter or structure field) (Unrecognized or unsupported array type) in function cvGETMAT, .\cxarray.cpp(2882)

¿A que se debe esto?
El codigo es el siguiente:

#include <stdio.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include "comun.h"

#define fOriginal "OpenCV player"
#define fGris "OpenCV player gris"




int main(int argc, char* argv[])
{
 int tecla, i, j;
 IplImage *imgOrg, *imgGris;
 CvSize imgSize; // size of visualisation image
 CvCapture* videoOrg;
 char nomVideoOrg[1024];
 double fps, tiempoEntreCuadros;
 int salir, // Controla la condición de terminación de la aplicación
      parar; // La reproducc. del vídeo.
 long int nCuadro = 0;


  cvInitSystem( argc, argv );
  printf("%s [OpenCV version %s]\n", argv[0], CV_VERSION );
  printf("Va, %s en <%s>!\n", argv[0], (argc>1? argv[1]: ""));


  //Comprobamos si han pasado un vídeo como parámetro, sino uno por defecto
  sprintf( nomVideoOrg, "%s", (argc > 1? argv[1] : "laser.avi")  );
  if (nomVideoOrg == NULL)
  {
   fprintf(stderr, "Problemas con el fichero de vídeo: %s.\n", nomVideoOrg );
   return( 1 );
  }

  videoOrg = cvCreateFileCapture( nomVideoOrg );
  if (videoOrg == NULL)
  {
   fprintf(stderr, "Problemas abriendo el fichero de vídeo >%s<\n", nomVideoOrg );
   return( 2 );
  }

  printf("Mostrando el contenido de la fuente de vídeo: >%s<\n \
ESC, q, Q - Salir.\n \
i/I - reIniciar el vídeo\n\
s/S - parar/continuar el vídeo\n",
         nomVideoOrg );


  imgOrg = cvQueryFrame( videoOrg );
  cvCvtColor(imgOrg,imgGris,CV_BGR2GRAY);
  if (imgOrg == NULL)
  {
   fprintf(stderr, "Problemas obteniendo imágenes en %s\n", nomVideoOrg );
   return( 3 );
  }
  nCuadro++;
  cvNamedWindow( fOriginal, CV_WINDOW_AUTOSIZE );
  cvShowImage( fOriginal, imgOrg );
  cvNamedWindow( fGris, CV_WINDOW_AUTOSIZE );
  cvShowImage( fGris, imgGris);
 



  imgSize.width = imgOrg->width;
  imgSize.height = imgOrg->height;
  fps = cvGetCaptureProperty( videoOrg, CV_CAP_PROP_FPS );
  if (fps == 0.0)
     fps = 25;
  tiempoEntreCuadros = 1000.0 / fps;

  salir = FALSE;
  parar = FALSE;

  while ( !salir )
  {
   if (parar == FALSE)
   {
     cvShowImage( fOriginal, imgOrg );
     cvShowImage( fGris, imgGris );

     nCuadro++;
     fprintf(stdout, "%ld\r", nCuadro );
     fflush( stdout );
   }

   tecla = cvWaitKey( tiempoEntreCuadros ) & 255;

   switch ( tecla )
   {
    case ESC:
    case 'q':
    case 'Q':    // Si 'ESC', q ó Q, ¡acabar!
      //       fprintf(stderr, "Acabando ...\n" );
     salir = TRUE;
     break;

    case 'i':    // Reiniciar
    case 'I':
      cvReleaseCapture( &videoOrg );
      videoOrg = cvCreateFileCapture( nomVideoOrg );
      if (videoOrg == NULL)
      {
       fprintf(stderr, "Problemas abriendo el fichero de vídeo >%s<\n", nomVideoOrg );
       return( 2 );
      }
      parar = FALSE;
      //       fprintf(stderr, "Reiniciando ...\n" );
     break;

    case 's':    // Stop
    case 'S':
      //      fprintf(stderr, "Parar/continuar %d ...\n", parar );
      parar = !parar;
     break;

    default: ;    //    fprintf(stdout, "Se ha pulsado la tecla %c (código %d)\n", tecla, tecla);
   } // Fin de "switch ( tecla )"


   if (parar == FALSE)
    if (cvGrabFrame (videoOrg))
     imgOrg = cvQueryFrame( videoOrg );
   // Esta imgOrg es interna a OpenCV: no modificarla.
   // Para hacer cambios, generar una copia y trabajar sobre esta
   // if (cvGrabFrame (videoOrg)) {imgAux=cvQueryFrame(videoOrg); imgOrg=cvClone(imgAux); ...}

   if ((parar == FALSE) AND (imgOrg == NULL))
   {
     parar = TRUE;
     fprintf(stdout, "Fi del fitxer: ESC para terminar o 'i' para reiniciar.  " );
     fflush( stdout );
   }

  } // Fin de for(;;)

  //cvWaitKey( 0 );
 cvReleaseCapture( &videoOrg );


 cvDestroyAllWindows( );
 // No hace falta liberar la "imgOrg", ya que es una copia interna
 // cvReleaseImage( &imgOrg );


 return 0;
}// Fin de "main"



//
// Fi de fitxer "opencv_player"
//
3  Programación / Programación C/C++ / duda modificacion imagen en: 15 Enero 2011, 16:05 pm
Hola buenas, tengo el siguiente código el cual al crear la imagen en el main y llamar a la funcion me crea una imagen en color.Quiero modificarlo para que aparezca una franja horizontal blanca de 10 pixeles en el centro de la imagen pero no se las instruccion exacta cvSet2D que he de utilizar y los valores que se tienen que añadir a las variables colorDst.val[X

¿Que deberia modificar?

Muchas gracias.

El código es el siguiente:

int  incializarImgRGB( IplImage *imgOrg )
{
int x, // indice de las columnas
y; // indice de las filas
CvScalar colorDst;
if ( imgOrg->nChannels != 3)
return( 1 );
else
{
for ( x = 0; x < imgOrg->width; x++ )
for ( y = 0; y < imgOrg->height; y++ )
{
colorDst.val[R] = (double)y;
colorDst.val[G] = (double)x;
colorDst.val = (double)((y+x) % (int)L);
cvSet2D(imgOrg, y, x, colorDst);
} // Fin de " for ( y = 0; y < imgOrg->height; y++ )"
}// Fin de if-else ( imgOrg->nChannels != 3)

} // Fin de "int  incializarImgRGB( IplImage *imgOrg )"
4  Programación / Programación C/C++ / Re: error al compilar en: 14 Enero 2011, 22:59 pm
Muchas gracias al copiar las librerias en el directorio donde se genera el ejecutable se soluciona el problema.

Gracias por todo.

Un saludo
5  Programación / Programación C/C++ / Re: error al compilar en: 14 Enero 2011, 17:00 pm
Hola buenas.

He puesto el en el path la variable del sistemas tal como me has comentado pero continua apareciendome el mismo error.

La libreria esa la puedo encontrar en algun lado? La habria de poner en linker dentro de codeblocks o registrarla en alguna ruta en Windows.

Muchas gracias.

6  Programación / Desarrollo Web / duda imagenes en html en: 13 Enero 2011, 17:53 pm
Estoy empezando con HTML y tengo una duda que no he podido resolver.

He creado una imagen con programa webdraw y la he guardado como imagen.svg pero también la he exportado con imagen.bmp(imagen estática). Me piden crear un archivo html que utilice la imagen estatica como un enlace a la version SVG y este fichero no debe contener directamente ningun grafico svg para que se pueda ver con cualquier navegador. Exactamente no se a que refiere con esto.

Yo he creado el siguiente fichero pero no se visualiza la imagen y no se si es lo que se me pide:

<html>
<head> <title>Ejemplo de gráfico SVG</title> </head>
<body>
<center>
<embed src=ejercicio1.bmp" name="ejercicio1"
width="500" height="500"
</center>
</body>
</html>



Si tengo una animación svg y la quiero insertar en una pagina html con este codigo si me sale, pero no es lo que se me pide primero.


<html>
<head> <title>Ejemplo de gráfico SVG</title> </head>
<body>
<center>
<embed src="C:\Users\Javi\IMD\imagen\pruebas\ejercicio1(a nimacion).svg" name="ejercicio1(animacion)"
width="500" height="500"
type="image/svg-xml"
pluginspage="http://www.adobe.com/svg/viewer/install/">
</center>
</body>
</html>


¿Cual seria la solucion? No me aclaro mucho.

Un saludo

Muchas gracias.
7  Programación / Programación C/C++ / Re: error al compilar en: 13 Enero 2011, 17:50 pm
Hola perdona si que trabajo con Windows.

He desintalado version 2.2 que tenia de openCV y he instalado las versiones 2.0 y 1.1 de la siguiente página:

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/

He seguido manual del link que me has pasado pero hay algunos pasos que no he podido realizar al no encontrar la ruta ni las librerias que me mencionas.

Al añadir en el debug dentro de search directories-->linker no encuentro la ruta C:\OpenCV2.0_VS2008\lib\Debug

En el paso Add the libraries(OpenCV2.0) directive. tampoco encuentro esas librerias que menciona.
Ya no me aparece el error anterio y si que se compila el programa y se genera el ejecutable pero cuando lo intento ejecutar me da el siguiente error:

Error al iniciar la aplicacion porque no se encontro cxcore.dll. la reinstalacion de la aplicacion puede solucionar el problema.

No he encontrado la libreria cxcore110.dll pero la liberia cxcore.dll si que esta.

¿A que se debe este error?

Muchas gracias. Un saludo
8  Programación / Programación C/C++ / error al compilar en: 13 Enero 2011, 16:12 pm
Estoy utilizando programa codeblocks para el manejo de la libreria de opencv y el código siguiente me da el error Undefined reference to 'CvInitSystem' entre otros. Tengo todas las librerias bien linkadas y no se a que se debe este error. ¿Podeis decirme a que es debido? La función incializarImgRGB aun no esta implementada.Muchas gracias. El código es el siguiente:

#include <stdio.h>

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>


#include "comun.h"


#define fGRIS "¡Hola, OpenCV en gris!"
#define fRGB "¡Hola, OpenCV en color!"

#define L MAXPIXEL
#define AMPLE (int)L
#define ALT (int)L



// Declaraciones de prototipos locales
int incializarImgGris( IplImage *imgOrg );
int incializarImgRGB( IplImage *imgOrg );



//
// Programa principal
//
int main(int argc, char* argv[])
{
IplImage *imgOrgGris;

cvInitSystem( argc, argv );
printf("OpenCV version: %s\n", CV_VERSION);
//CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION, CV_VERSION


printf("Creando una imagen y mostrándola en pantalla [Cualquier tecla - Salir].\n");

imgOrgGris = cvCreateImage(cvSize(AMPLE, ALT),IPL_DEPTH_8U, 1);
if (!imgOrgGris)
{
fprintf(stderr, "Problemas al crear la imagen en grises\n");
return( 1 );
}

fprintf(stderr, "Se ha creado una imagen de %dx%d, de %d planos.\n",
imgOrgGris->width, imgOrgGris->height, imgOrgGris->nChannels );
incializarImgGris( imgOrgGris );
cvNamedWindow( fGRIS, CV_WINDOW_AUTOSIZE );
cvShowImage( fGRIS, imgOrgGris );
cvMoveWindow( fGRIS, 0, 0 );



// RGB




cvWaitKey(0); // Espera una tecla los milisegundos que haga falta


cvDestroyAllWindows( );

cvReleaseImage( &imgOrgGris );

return 0;
}








//
// Inicializa una imagen de un sólo plano de color (imagen de grises)
// con un gradiente de valores de gris
//
// Entrada: imgOrg - la imagen de partida.
//
// Salida: imgOrg - la imagen resultados que se devuelve modificando la original.
//
int incializarImgGris( IplImage *imgOrg )
{
int x, // indice de las columnas
y; // indice de las filas
CvScalar colorDst;

if ( imgOrg->nChannels != 1)
return( 1 );
else
{

for ( x = 0; x < imgOrg->width; x++ )
for ( y = 0; y < imgOrg->height; y++ )
{
colorDst.val[0] = x;

cvSet2D(imgOrg, y, x, colorDst);
} // Fin de " for ( y = 0; y < imgOrg->height; y++ )"
}// Fin de if-else ( imgOrg->nChannels != 1)

} // Fin de "int incializarImgGris( IplImage *imgOrg )"


int incializarImgRGB( IplImage *imgOrg )
{

} // Fin de "int incializarImgRGB( IplImage *imgOrg )"*/
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines