• Viernes 3 de Mayo de 2024, 04:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - KAYSS

Páginas: [1]
1
C/C++ / Re: Acceso a punteros desde Threads
« en: Martes 4 de Agosto de 2009, 11:55 »
Cita de: "Eternal Idol"
No, de este modo podes pasar un puntero al objeto, con lo cual podes acceder a todos sus miembros.

Digamos que tenes:

Código: C++
  1. Clase *c; //un puntero a un objeto tu clase, usaste new en algnun momento para crear el objeto
  2.  

Entonces creas el hilo:
Código: C++
  1. CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hilo, (LPVOID)c, 0, 0);
  2.  

Y en el hilo:
Código: C++
  1. DWORD WINAPI Hilo(LPVOID lpParameter)
  2. {
  3.   Clase *c = (Clase*)lpParameter;
  4.   c->loQueSea;
  5.   c->otraCosa();
  6. }
  7.  


Muchas gracias,

Ya me queda todo más claro.

Gracias y saludos

2
C/C++ / Re: Acceso a punteros desde Threads
« en: Martes 4 de Agosto de 2009, 08:56 »
Cita de: "Eternal Idol"
Los hilos reciben un parametro, cuando creas el hilo podes pasar el puntero al objeto de la clase en cuestion que estes usando.

Muchas gracias,

Me has solucionado el problema con uno de los hilos.

Sin embargo, en otro de los thread necesito acceder a varios atributos de la clase que son punteros y de este modo únicamente puedo pasarle uno.

Gracias y saludos

3
C/C++ / Acceso a punteros desde Threads
« en: Lunes 3 de Agosto de 2009, 21:40 »
Hola a tod@s!

Mi problema es que necesito acceder desde el método, que va a ejecutar como un thread y por tanto es estático, a un artributo de la clase que es un puntero a una imagen, lo cual me dice al compilar que no es posible.

Cómo podría acceder a este atributo que es un puntero desde el thread?

Gracias y saludos

4
C/C++ / Re: Error Al Compilar Un Proyecto En Kdevelop
« en: Lunes 3 de Marzo de 2008, 11:47 »
El problema lo he solucionado instalando automake

Sin embargo, ahora me da el siguiente error:

configure: error: c++ preprocessor "/lib/cpp" fails sanity check

Gracias, Juan

5
C/C++ / Re: Error Al Compilar Un Proyecto En Kdevelop
« en: Viernes 29 de Febrero de 2008, 16:38 »
El problema es que ya tengo instalado el Autoconf 2.61

Saludos, Juan

6
C/C++ / Error Al Compilar Un Proyecto En Kdevelop
« en: Viernes 29 de Febrero de 2008, 16:31 »
Hola a todos,

Quisiera saber si vosotros me podríais decir la causa de que KDevelop (v. 3.5) no me deje compilar un nuevo proyecto.

El mensaje que me muestra es:

./admin/cvs.sh: 651: --version: not found
*** AUTOCONF NOT FOUND!.
*** KDE requires autoconf 2.53 or newer
make[1]: *** [cvs] Error 1
make: *** [all] Error 2
*** Exited with status: 2 ***


Saludos, Juan

7
Otros CLR / Re: Aplicar Una Máscara A Una Imagen
« en: Viernes 9 de Noviembre de 2007, 20:18 »
Muchas gracias por todo!!!   :)

Un saludo

8
Otros CLR / Re: Aplicar Una Máscara A Una Imagen
« en: Jueves 8 de Noviembre de 2007, 11:23 »
Muchas gracias de nuevo, todos tus consejos me han sido de gran ayuda.

Aplicaré todo lo que me dices


Un saludo

9
Otros CLR / Re: Aplicar Una Máscara A Una Imagen
« en: Jueves 8 de Noviembre de 2007, 01:19 »
Muchas gracias por la ayuda, Juan Carlos.
He aplicado lo que me propones y he conseguido reducir de 2 minutos y medios a 1 minuto y medio el tiempo empleado en aplicar una máscara 3x3 a una imagen, que aunque sigue siendo mucho tiempo pero mejora el anterior.
Te muestro el código resultante:

Código: Text
  1. Bitmap^ AplicarMascara2(System::Drawing::Bitmap ^Imagen, cli::array<int>^ Mascara, int Tamanio){
  2.    this->ImagenFiltrada=gcnew System::Drawing::Bitmap (Imagen);
  3.    int i, j, k, q, IncX, IncY, X, Y, ValorPixel, PosVectorRGB;
  4.    int TamanioNxN=Tamanio*Tamanio;
  5.    double Sumatorio;
  6.    Color color;
  7.    int Cte1=Tamanio/2;
  8.  
  9.    // formato de pixel
  10.    PixelFormat pxf = PixelFormat::Format24bppRgb;
  11.  
  12.    // Bloqueamos los pixels de la imagen original y la filtrada
  13.    Rectangle rect = System::Drawing::Rectangle(0, 0, Imagen->Width, Imagen->Height);
  14.    BitmapData ^bmpDatosOriginal = Imagen->LockBits(rect, ImageLockMode::ReadWrite, pxf);
  15.    BitmapData ^bmpDatosFiltrada = ImagenFiltrada->LockBits(rect, ImageLockMode::ReadWrite, pxf);
  16.  
  17.    // Obtenemos la direcciones de comienzo
  18.    IntPtr ptrOriginal = bmpDatosOriginal->Scan0;
  19.    IntPtr ptrFiltrada = bmpDatosFiltrada->Scan0;
  20.  
  21.    // Declaramos los arrays para almacenar los bytes de los bitmaps
  22.    int numBytes = Imagen->Width * Imagen->Height * 3;
  23.    array<Byte> ^valoresRGBOriginal = gcnew array<Byte>(numBytes);
  24.    array<Byte> ^valoresRGBFiltrada = gcnew array<Byte>(numBytes);
  25.  
  26.    // Copiamos los valores RGB a los arrays
  27.    Marshal::Copy(ptrOriginal, valoresRGBOriginal, 0, numBytes);
  28.    Marshal::Copy(ptrFiltrada, valoresRGBFiltrada, 0, numBytes);
  29.  
  30.    // Recorremos la imagen
  31.    for(i=0; i<Imagen->Width; i++){
  32.      for (j=0; j<Imagen->Height; j++){
  33.      
  34.        IncY=Cte1;
  35.        Sumatorio=0;
  36.  
  37.        // Recorremos la máscara
  38.        for (k=0; k<Tamanio; k++){
  39.        
  40.          Y=j+IncY;
  41.          IncX=Cte1;
  42.  
  43.          for (q=0; q<Tamanio; q++){
  44.            X=i+IncX;
  45.            if ((X>=0&&X<Imagen->Width)&&(Y>=0&&Y<Imagen->Height)){
  46.              Sumatorio=Sumatorio+
  47.              Convert::ToDouble(Mascara[(Cte1+IncX)*3 + (Cte1+IncY)])*
  48.              Convert::ToDouble(valoresRGBOriginal[(Y*Imagen->Width+X)*3]);
  49.            }
  50.            IncX--;
  51.          }
  52.          IncY--;
  53.        }
  54.      
  55.        // El valor del pixel será el valor del sumatorio obtenido
  56.        if (Sumatorio>0)ValorPixel=Convert::ToInt32(Sumatorio)%255;
  57.        else ValorPixel=0;
  58.        PosVectorRGB=(j*Imagen->Width+i)*3;
  59.        valoresRGBFiltrada[PosVectorRGB]=ValorPixel;
  60.        valoresRGBFiltrada[PosVectorRGB+1]=ValorPixel;
  61.        valoresRGBFiltrada[PosVectorRGB+2]=ValorPixel;
  62.      }
  63.    }
  64.  
  65.    // Copiamos de nuevo los valores del array al bitmap
  66.    Marshal::Copy(valoresRGBFiltrada, 0, ptrFiltrada, numBytes);
  67.  
  68.    // Desbloqueamos los bytes
  69.    ImagenFiltrada->UnlockBits(bmpDatosFiltrada);
  70.    Imagen->UnlockBits(bmpDatosOriginal);
  71.  
  72.    return ImagenFiltrada;
  73. }
  74.  

Gracias, un saludo

10
Otros CLR / Aplicar Una Máscara A Una Imagen
« en: Miércoles 7 de Noviembre de 2007, 10:27 »
Alguno sabéis de una forma rápida de aplicar una máscara a una imagen en mapa de bits.

Yo primero creo la máscara (matriz nxn), recorro pixel a pixel la imagen, sitúo la máscara y recorro la máscara posición por posición para dicho pixel, y así con todos los demás pixels de la imagen. Pero esto es muy lento.

Os muestro el código que he desarrollado por si es causa de que no está bien planteado:

Código: Text
  1. Bitmap^ AplicarMascara(Bitmap ^Imagen, Array^ Mascara, int Tamanio){
  2.   Bitmap ^ImagenFiltrada=gcnew Bitmap (Imagen->Width, Imagen->Height);
  3.   int IncX, IncY, X, Y;
  4.   int TamanioNxN=Tamanio*Tamanio;
  5.   double Sumatorio;
  6.   Color color;
  7.  
  8.   // Aplicamos la máscara para cada uno de los pixels de la imagen
  9.   for(int i=0; i<Imagen->Width; i++){
  10.     for (int j=0; j<Imagen->Height; j++){
  11.  
  12.       IncY=Tamanio/2;
  13.       Sumatorio=0;
  14.  
  15.       // Recorremos los valores de la máscara para aplicarlos a la imagen
  16.       for (int k=0; k<Tamanio; k++){
  17.  
  18.         Y=j+IncY;
  19.         IncX=Tamanio/2;
  20.  
  21.         for (int q=0; q<Tamanio; q++){
  22.           X=i+IncX;
  23.           if ((X>=0&&X<Imagen->Width) && (Y>=0&&Y<Imagen->Height))
  24.             Sumatorio=Sumatorio + Mascara->GetValue(Tamanio/2+IncX, Tamanio/2+IncY)) * Imagen->GetPixel(X,Y).R;
  25.  
  26.           IncX--;
  27.         }
  28.  
  29.         IncY--;
  30.       }
  31.  
  32.       // El valor del pixel será el valor del sumatorio obtenido
  33.       color=Color::FromArgb(Sumatorio, Sumatorio, Sumatorio);
  34.       ImagenFiltrada->SetPixel(i, j, color);
  35.     }
  36.   }
  37.  
  38.   return ImagenFiltrada;
  39. }
  40.  



Gracias, un saludo

11
Visual C++ / Re: Aplicar Una Máscara A Una Imagen
« en: Martes 6 de Noviembre de 2007, 17:55 »
Ok!

Entonces a partir de ahora miro en ese hilo.


Gracias

12
Visual C++ / Re: Aplicar Una Máscara A Una Imagen
« en: Martes 6 de Noviembre de 2007, 17:12 »
Pero si es código en Windows Form de Visual Studio .Net?

13
Visual C++ / Re: Aplicar Una Máscara A Una Imagen
« en: Martes 6 de Noviembre de 2007, 10:48 »
Muchas gracias por la ayuda!!!

Supongo que en este caso me debería centrar más en optimización de código. Como no se exactamente a lo que te refieres exactamente en las opciones que me propones para optimizar el código, os muestro mi algoritmo y a ver si con el podemos hacer algo:

Código: Text
  1.  
  2. Bitmap^ AplicarMascara(Bitmap ^Imagen, Array^ Mascara, int Tamanio){
  3.   Bitmap ^ImagenFiltrada=gcnew Bitmap (Imagen->Width, Imagen->Height);
  4.   int IncX, IncY, X, Y;
  5.   int TamanioNxN=Tamanio*Tamanio;
  6.   double Sumatorio;
  7.   Color color;
  8.  
  9.   // Aplicamos la máscara para cada uno de los pixels de la imagen
  10.   for(int i=0; i<Imagen->Width; i++){
  11.     for (int j=0; j<Imagen->Height; j++){
  12.      
  13.       IncY=Tamanio/2;
  14.       Sumatorio=0;
  15.  
  16.       // Recorremos los valores de la máscara para aplicarlos a la imagen
  17.       for (int k=0; k<Tamanio; k++){
  18.        
  19.         Y=j+IncY;
  20.         IncX=Tamanio/2;
  21.  
  22.         for (int q=0; q<Tamanio; q++){
  23.           X=i+IncX;
  24.           if ((X>=0&&X<Imagen->Width) && (Y>=0&&Y<Imagen->Height))
  25.             Sumatorio=Sumatorio + Mascara->GetValue(Tamanio/2+IncX, Tamanio/2+IncY)) * Imagen->GetPixel(X,Y).R;
  26.  
  27.           IncX--;
  28.         }
  29.  
  30.         IncY--;
  31.       }
  32.      
  33.       // El valor del pixel será el valor del sumatorio obtenido
  34.       color=Color::FromArgb(Sumatorio, Sumatorio, Sumatorio);
  35.       ImagenFiltrada->SetPixel(i, j, color);
  36.     }
  37.   }
  38.  
  39.   return ImagenFiltrada;
  40. }
  41.  
  42.  


Muchas gracias por todo.
Un saludo

14
Visual C++ / Aplicar Una Máscara A Una Imagen
« en: Viernes 2 de Noviembre de 2007, 21:27 »
Hola!

Alguno sabéis de una forma rápida de aplicar una máscara a una imagen en mapa de bits.

Yo primero creo la máscara (matriz nxn), recorro pixel a pixel la imagen, sitúo la máscara y recorro la máscara posición por posición para dicho pixel, y así con todos los demás pixels de la imagen.

Como os podeis imaginar esto tarda mucho en ejecutarse para una imagen de una resolución media.

Espero algunos sepais algún método más rápido


Saludos

15
Visual C++ / Convertir Una Imagen Rgb A Escala De Grises
« en: Sábado 8 de Septiembre de 2007, 20:00 »
He encontrado una solución pero es muy lenta (3, 4 seg en procesarla), a ver si me podéis decir otra o una modificación de esta más rápida:

double bn;
Color color, ColorBN;

for(int i=0; i<Imagen->Width; i++){
    for (int j=0; j<Imagen->Height; j++){
         color=Imagen->GetPixel(i,j);
         bn=(double) ((color.R*30)+(color.G*59)+ (color.B*11));
         ColorBN=Color::FromArgb(bn,bn,bn);
         ImagenBN->SetPixel(i,j,ColorBN);
    }
}


this->PictureBoxImagen->Image=this->ImagenBN;

Saludos, kayss

16
Visual C++ / Gráficas, Histogramas, Etc. En Visual C++
« en: Domingo 2 de Septiembre de 2007, 14:44 »
Hola,

Cuál sería la manera de insertar crear gráficas, histogramas, digramas desectores, etc. en un proyecto en Visual C++. Es para mostrar una serie de comparativas de datos.

Gracias.

17
Visual C++ / Cambiar Formato De String A Negrita
« en: Lunes 28 de Mayo de 2007, 17:18 »
Hola!

Quería preguntaros si me podríais decir como cambiar el formato de una variable de tipo String ^ a negrita

Gracias

18
C/C++ / Re: JUEGO DEL "TETRIS" en C++
« en: Miércoles 8 de Enero de 2003, 00:18 »
TIOS TENGO PROBLEMAS CON EL JUEGO DEL TETRIS, si alguien sabe como se hace o lo ha hecho ya puede ayudarme.

GRACIAS!!!

kayss@hotmail.com

19
C/C++ / Re: JUEGO DEL "TETRIS" en C++
« en: Martes 7 de Enero de 2003, 23:50 »
TIOS TENGO PROBLEMAS CON EL JUEGO DEL TETRIS, si alguien que sepa como hacerlo o lo haya hecho pueda ayudarme.

GRACIAS!!!!

kayss@hotmail.com

Páginas: [1]