• Viernes 8 de Noviembre de 2024, 19:06

Autor Tema:  procesamiento de imagenes Opencv  (Leído 10956 veces)

Gilmour

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
procesamiento de imagenes Opencv
« en: Martes 2 de Febrero de 2010, 07:53 »
0
Hola a todos.
estoy haciendo un programa en devc++ y estoy utilizando la libreria opencv.
tengo un problema y es que cuando recorro una imagen grande (1000x600) utilizando la sentencia "for" me aparece un error, el cual no sale cuando
trabajo con imagenes pequeñas (500x500). si alguien sabe algo, me seria de mucha ayuda. gracias.

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #1 en: Martes 2 de Febrero de 2010, 15:51 »
0
Y cual es el error que te aparece?

Puede ser por el tipo como declaraste la variable que utilizas en el ciclo

Gilmour

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #2 en: Martes 2 de Febrero de 2010, 18:37 »
0
Primero que todo agradesco tu colaboracion. espero que me puedas ayudar.
a continuacion te explico con un poco de detalle en que consiste el problema.

realice un algoritmo para binarizar una imagen

en el primero caso cargo una imagen llamada "Para_Elisa.jpg" de tamaño 640x395 (tambien adjunta) en el cual no ocurre ningun problema.
en el segundo caso, utlizando el mismo codigo, cargo una imagen llamada "Himno.jpg" de tamaño 1093x660 (adjunta) en el cual aparece un mensaje que dice que "el programa dejo de funcionar".

Adjunto los dos codigos y las dos imagenes.

Gracias
El mensaje contiene 2 archivos adjuntos. Debes ingresar o registrarte para poder verlos y descargarlos.

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #3 en: Martes 2 de Febrero de 2010, 19:51 »
0
Pues a mi me ejecuta bien el codigo, no aparece ningun error. Al final si me muestra la imagen.

Yo lo compile con MinGW (gcc 4.4.1)

Prueba utilizando distintos tipos para las variables i,j (unsigned int, unsigned long, o hasta double)

Este es el codigo que utilice
Código: C
  1. #include <cv.h>
  2. #include <highgui.h>
  3. #include <math.h>
  4.  
  5. int main(int argc, char** argv) {
  6.     CvScalar s0 = cvScalarAll(0);
  7.     CvScalar s1 = cvScalarAll(255);
  8.     IplImage *A = cvLoadImage(argv[1],1);
  9.  
  10.     for(int i=0;i<A->width;i++)
  11.         for(int j=0;j<A->height;j++) {
  12.             if ( (cvGet2D(A,j,i)).val[0] < 180 )
  13.                 cvSet2D(A,j,i,s0);
  14.             else
  15.                 cvSet2D(A,j,i,s1);
  16.         }
  17.     cvNamedWindow("ventana",0);
  18.     cvShowImage("ventana",A);
  19.     cvWaitKey(0);
  20.     cvDestroyAllWindows();
  21.     cvReleaseImage(&A);
  22.     return 0;
  23. }
  24.  
  25.  

Gilmour

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #4 en: Martes 2 de Febrero de 2010, 21:44 »
0
¿como puedo saber que compilador estoy usando?
¿y como lo puedo cambiar?

¿porque usas argv[1] como parametro en la funcion cvLoadImage?
probe tu codigo y me genera un error debido a esa linea.

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #5 en: Martes 2 de Febrero de 2010, 22:06 »
0
En una ventana de "DOS" ejecuta gcc --version para que te aparezca la version que estas utilizando

Si te fijas, cambie la declaracion de la funcion main que tenias por esta:
Código: C
  1. int main(int argc, char** argv)
  2.  

Con esto haces posible que el programa reciba parametros. argc contiene el total de parametros que se enviaron. argv es un arreglo de cadenas que contiene los parametros. argv[0] siempre va a ser el nombre del programa que estas ejecutando. Yo lo modifique para poder enviar el nombre de la imagen que queria leer. Por eso en cvLoadImage lo cambie para que lea la imagen que envie como parametro

Gilmour

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #6 en: Martes 2 de Febrero de 2010, 22:39 »
0
estoy usando el compilador gcc 3.4.2.
como puedo cambiarlo por el gcc 4.4.1

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: procesamiento de imagenes Opencv
« Respuesta #7 en: Viernes 5 de Febrero de 2010, 13:01 »
0
Cita de: "Gilmour"
estoy usando el compilador gcc 3.4.2.
como puedo cambiarlo por el gcc 4.4.1
Usas windows, Linux o MAC. En caso de Linux basta con actualziar el sistema y sino tienes instala el build-essential.