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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  error bad flag
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: error bad flag  (Leído 2,699 veces)
boticheliss

Desconectado Desconectado

Mensajes: 8


Ver Perfil
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"
//


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con flag carry
ASM
Tyrz 1 4,870 Último mensaje 18 Octubre 2010, 08:21 am
por kernel19
Problemas con TEST y el flag Z
Ingeniería Inversa
Tinkipinki 7 4,896 Último mensaje 11 Noviembre 2011, 00:06 am
por Tinkipinki
Consulta; Capture The Flag, ¿Como puedo prepararme?
Seguridad
astinx 0 2,629 Último mensaje 14 Diciembre 2011, 17:49 pm
por astinx
Modificar Flag de segmento TCP (.NET 2010)
.NET (C#, VB.NET, ASP)
__Alvaro 2015__ 4 2,460 Último mensaje 6 Febrero 2015, 22:53 pm
por __Alvaro 2015__
Problema Flag sección
Ingeniería Inversa
.:UND3R:. 2 2,351 Último mensaje 23 Enero 2016, 06:17 am
por .:UND3R:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines