• Lunes 23 de Diciembre de 2024, 04:03

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 - Geo

Páginas: 1 ... 6 7 [8] 9 10 ... 41
176
Matlab / Re: precesar imagen.....
« en: Jueves 11 de Diciembre de 2008, 08:47 »
Prueba con & en lugar de &&.

Esto:
Código: Text
  1. c = H * S * V
  2.  
podrías sustituirlo por esto:
Código: Text
  1. c = H & S & V
  2.  
(debería ser el mismo resultado).

En cuanto al problema con la sentencia if, no te entendí muy bien, pero creo que puedes resolverlo por tu cuenta :). Suerte.

177
Retos / Re: reto un bmp en php
« en: Domingo 7 de Diciembre de 2008, 05:56 »
Cita de: "darktalker"
+Debe mostrar del lado derecho laimagen de entrada en escala de grises
¿Para qué?

Cita de: "darktalker"
repito cualquier duda , favor de preguntarme
¿Ya lo realizaste?

178
Matlab / Re: precesar imagen.....
« en: Sábado 6 de Diciembre de 2008, 21:06 »
En el código que pones, donde se cumplan las condiciones habrá 1 (unos), donde no, 0 (ceros). Me parece buena idea multiplicarlos, donde no coincidan los tres, el resultado será 0, para tener un 1 como resultado, los tres planos deben cumplir las condiciones :).

Suerte :).

Solo me estoy preguntando una cosa, bien podría hacerse lo mismo sin la conversión a HSV, usando el espacio RGB ¿no? Una opción para robustecerlo sería hacerlo en los dos espacios :).

179
Matlab / Re: precesar imagen.....
« en: Viernes 5 de Diciembre de 2008, 07:11 »
El código está bien, me refería a que si copio y pego me da un error con un comentario que no tiene %, y otro con la función rgb2hsv, que me parece debieras aplicar a foto y no a la variable cam.

En el código que pusiste con &&, no puedes hacer eso, primero, los valores de HSV los debes tomar de la matriz b, resultado de la conversión rgb2hsv, no de la matriz H como pusiste.

180
Matlab / Re: precesar imagen.....
« en: Jueves 4 de Diciembre de 2008, 14:12 »
Disculpa, no entendí muy bien cuál es tu problema.

El código que colocaste tiene un par de errores (debes haber copiado mal), lo que hace es buscar los pixeles en la imagen que en el espacio de color HSV tienen un valor de H > 0.92 y el resto de pixeles los elimina (los pone en un valor 0).

La matriz c guarda valores 0 y 1 para cada pixel de la imagen original, donde un 1 indica que el pixel que corresponde a esa posición en la imagen tiene un valor H > 0.92, por lo tanto, si deseas ejecutar una acción si encuentras pixeles con H>0.92 una alternativa es recorrer la matriz c y evaluar si los valores son 1 o 0, ahí es donde podrías ejecutar la acción que desees.

181
C/C++ / Re: OPENCV para C#
« en: Sábado 29 de Noviembre de 2008, 08:35 »
Qué tal Quick, disculpa no contestar antes, pero no había tenido oportunidad de visitar el foro :P. ¿Puedes decirme más específicamente cuál es el problema que tienes? ¿Estás usando VC++, qué versión? ¿No has podido compilar tus códigos o enlazarlos? Si es eso, ¿qué errores te muestra?

El archivo que me mencionas no existe en la distribución de OpenCV, quizá te refieras a cv.lib, que es uno de los archivos que se necesita enlazar con el ejecutable. Aquí puedes encontrar una guía breve para utilizar OpenCV con VC++ 2008:
http://jenriquez.zzl.org/2008/11/usar-o ... n-express/

Espero te sea de ayuda :). Ah, y muchas gracias por el enlace, ya antes había buscado algo similar, espero encontrar un poco de tiempo para darle un vistazo más a fondo :).

---------------------
Edito: veo que checaste la página anterior en donde puse los pasos para compilar/enlazar OpenCV usando VC++ 2008, hay un detalle ya corregido en la que mencioné más arriba: agregar cv.lib a las dependencias además de highgui.lib, olvidé mencionarlo en el texto pero se alcanza a apreciar en la imagen :), creo que este es tu problema :P.

Suerte,
José Jorge (Geo).

182
Matlab / Re: Leer fichero enviando por parámetro a una función
« en: Lunes 17 de Noviembre de 2008, 00:55 »
¿Qué deseas pasar a la función, el nombre del archivo a abrir, un puntero al archivo ya abierto?
¿Qué error te da? Coloca la parte de código que te da problemas :).

183
Matlab / Re: Leer fichero enviando por parámetro a una función
« en: Domingo 16 de Noviembre de 2008, 01:07 »

184
Matlab / Re: Crear y leer fichero
« en: Sábado 15 de Noviembre de 2008, 16:25 »
Además de probar con tabuladores para acomodar las columnas, prueba indicando también el número de caracteres como mencioné antes, p. ej.: %10d.

Para crear el nombre de archivo, es como mencionaste, tienes que agregar tantos ceros como sean necesarios al momento de concatenar, en MATLAB creo que no hay otra manera ya que no hay forma de indicar el caracter a insertar cuando los dígitos no cubren el número de caracteres deseados.

185
Matlab / Re: Frecuencia y Amplitud de una señal
« en: Viernes 14 de Noviembre de 2008, 00:11 »
Tienes que implementar la medición de frecuencia.

En MATLAB Central hay algún script para intentar estimar la frecuencia de una señal mediante estimaciones (comparación con un conjunto de frecuencias), pero no lo he probado.

186
Matlab / Re: Números con más de un digito
« en: Jueves 13 de Noviembre de 2008, 16:33 »
Ya te contesté en tu otro tema.

187
Matlab / Re: Crear y leer fichero
« en: Jueves 13 de Noviembre de 2008, 16:32 »
Bien, el formato en que se escriben los números depende del parámetro que pases: %d - número entero decimal, %f - número de punto/coma flotante. Con el primero no tendrás parte decimal, con el segundo si.

Luego, la cuestión de las separaciones, en los parámetros pasaste un parámetro t, que indica insertar un caracter tabulador (la tecla TAB en tu teclado), el detalle es que este TAB podrían interpretarlo diferente algunos editores de texto, algunos sustituyen el caracter TAB con un cierto número de espacios, los cuales pueden variar entre programas ¿con qué programa abres tu archivo resultante?

Para ordenar más adecuadamente, puedes determinar cuántos caracteres deseas utilizar para cada opción, pasando el número de caracteres deseados junto al formato numérico deseado. Por ejemplo: %3d, indica escribir un número entero forzando a que utilice al menos tres caracteres, si el número fuera de dos dígitos, el se agrega un espacio automáticamente para completar los 3. En tu código, puedes determinar cuál es el máximo de dígitos que deseas y utilizarlo como parámetro, algo como esto: También puedes indicar el número de dígitos decimales que deseas, haciendolo de esta forma: %.2f, indica formato flotante con dos decimales. Puedes combiarlas: %10.2f, formato flotante que utilice 10 digitos con dos decimales.
Código: Text
  1.  
  2. fprintf( f, '%10d %10d %10f %10f');
  3.  
  4.  
Haz varias pruebas y observa cómo va quedando para que vayas realizando los ajustes necesarios.

En cuanto a contar agregando ceros a la izquierda, no se cuenta con ceros a la izquierda, sino que estos se agregan al convertir a caracter (al generar tu nombre de archivo). El contador seguirá su lógica: 1, 2, 3... al momento de concatenar este valor para formar el nombre del archivo es donde debes agregarle tantos ceros (caracteres) como desees. Si no te sale con gusto más tarde pongo un ejemplo (no tengo MATLAB aquí ) :).

Suerte.

188
Matlab / Re: convertir un entero a vector
« en: Domingo 9 de Noviembre de 2008, 15:09 »
Para separar puedes ir dividiendo entre múltiplos de 10, en el caso del número que muestras, divides entre 100 obteniendo 1 centena, el resto (28) lo divides entre 10 obteniendo 2 decenas, y te queda como resto 8.

También, puedes convertir el número a cadena de caracteres y separar cada letra :).

189
Matlab / Re: Crear y leer fichero
« en: Jueves 6 de Noviembre de 2008, 14:40 »
Si save tiene la opción append, puedes usarla, aunque en la ayuda no pude ver que contara con esa opción (en la versión 2007).

Creo que es el momento de que intentes ya crear tu archivo :). Veo que no tendrás demasiadas columnas, en el ejemplo que puse antes puedes ver cómo escribir las cabeceras que deseas, para cada línea sería algo como:

Código: Text
  1.  
  2. fprintf( archivo, '%s %sn', 'Fichero: ', file );
  3.  
  4.  
Lo que indicas es que vas a escribir dos datos de tipo "string" y al final un caracter de fin de línea.

Para los títulos de las columnas, algo como:
Código: Text
  1.  
  2. fprintf( archivo, '%st%st%st%st%st%st%sn, 'x', 'y', 'dx', 'dy', 'u_dx', 'u_dy', 'nu' );
  3.  
  4.  
Aquí estás indicando siete parámetros de tipo "string", separados por tabuladores (t), al final un caracter de fin de línea.
Ya a continuación escribes los valores de la matriz, de manera similar al ejemplo que puse antes.

Prueba y coloca aquí los errores que tengas o dudas que te surjan.

Suerte.

190
Matlab / Re: Crear y leer fichero
« en: Lunes 3 de Noviembre de 2008, 17:25 »
Deberías leer un poco la documentación de MATLAB; indicar algunos detalles de qué es lo que deseas hacer, por ejemplo ¿planeas leer el archivo desde otro programa ajeno a MATLAB? Y por último, no crear tantas discusiones sobre un mismo problema :P.

Vamos a ver, suponiendo que queremos escribir estos datos a un archivo:
matriz = [ 1 2 3; 4 5 6; 7 8 9 ];
cabecera = 'Esta es mi cabecera';

save
Si quieres usar archivos .mat, esta es la opción más sencilla de conseguir lo que quieres. Una vez que las variables están en el workspace, las guardas:
Código: Text
  1.  
  2. % Variables
  3. matriz = [ 1 2 3; 4 5 6; 7 8 9 ];
  4. cabecera = 'Esta es mi cabecera';
  5.  
  6. % Guarda a archivo .mat
  7. save( 'archivo.mat', 'cabecera', 'matriz );
  8.  
  9.  
También puedes usar la función save de esta forma:
Código: Text
  1. % Guarda a archivo .mat
  2. save archivo.mat cabecera matriz
  3.  

Con eso trabajas perfectamente, lo único que te recomiendo, si piensas leer el archivo desde MATLAB, no guardar en formato ASCII (con el parámetro -ascii), porque al momento de querer cargar las variables te dará error de que no corresponden las dimensiones (el número de columnas de cada variable).
Por tanto, si piensas leer el archivo desde el mismo MATLAB lo mejor es que  guardes en formato MAT.

fprintf y otras funciones de creación de archivos
Por ejemplo, con la función csvwrite (guarda una matriz a un archivo de texto donde cada valor está separado por comas) no puedes escribir unos datos y posteriormente otros, ya que no recibe como parámetro un puntero a archivo, sino un nombre de archivo en el que guardará la matriz. Por esta razón no puedes usar "append". Y así es con funciones similares de MATLAB.

Crear un archivo como el que quieres es sencillo, checa este código:
Código: Text
  1. matriz = [ 1 2 3; 4 5 6; 7 8 9 ];
  2. cabecera = 'Esta es mi cabecera';
  3.  
  4. % Abre archivo
  5. f = fopen( 'archivo.txt', 'wt' );
  6.  
  7. % Escribe cabeceras
  8. fprintf( f, '%sn', cabecera );
  9.  
  10. % Escribe valores agrupados en tres columnas por línea
  11. fprintf( f, '%d %d %dn', matriz );
  12. % Termina escritura de valores de la matriz
  13.  
  14. % Cierra archivo
  15. fclose( f );
  16.  

Como ves, es bastante sencillo. Si tuvieras muchas más columnas sería tedioso escribir algo como fprintf( f, '%d %d %d %d %d %d....) hasta tener tantas %d como columnas :P. En lugar de eso, usa un for:

Código: Text
  1.  
  2. % Empieza escritura de valores de la matriz
  3. for filas = 1 : numFilas
  4.     for cols = 1 : numColumnas
  5.         fprintf( f, '%d ', valor );
  6.     end
  7.     % Terminamos una fila, empieza nueva línea
  8.     fprintf( f, 'n' );
  9. end
  10. % Termina escritura de valores de la matriz
  11.  
  12.  

Ánimo con esas dudas :).

191
Matlab / Re: Números con más de un digito
« en: Lunes 3 de Noviembre de 2008, 16:50 »
¿Podrías indicar más específicamente qué es lo que deseas hacer?

192
Matlab / Re: Crear y leer fichero
« en: Lunes 3 de Noviembre de 2008, 16:20 »
save guarda las variables que están en el workspace, para conseguir algo como lo que quieres tendrías que poner los datos que deseas como cabecera del archivo en variables dentro del workspace. Con fprintf tú vas indicando las variables a guardar.

193
Matlab / Re: Crear y leer fichero
« en: Lunes 3 de Noviembre de 2008, 05:47 »
Puedes usar la función printf para grabar los datos que quieres, para crear el archivo usas fopen. Revisa el foro que hay varios mensajes que te pueden ser de utilidad.

194
C/C++ / Re: Matrices C++ !!
« en: Sábado 1 de Noviembre de 2008, 16:14 »
De MATLAB recibes un tipo mxArray, debes convertirlo al tipo de variable que requieras, por ejemplo, yo lo hice con la función mxGetScalar como el ejemplo que puse antes, busca en la documentación de MATLAB, vienen algunos ejemplos que pueden servirte.

(Son esas dudas que o se dividen en dos posts, o no sabría uno en qué foro colocarlas :P).

195
C/C++ / Re: Xerces en visual C++
« en: Viernes 31 de Octubre de 2008, 06:05 »
La portabilidad que brinda Xerces es a nivel de código, el resto, configurar tu entorno para poder usar la biblioteca, se debe hacer en cada sistema en el que trabajes.

196
Matlab / Re: Lectura y escritura de ficheros
« en: Viernes 31 de Octubre de 2008, 05:45 »
Claro que se pueden combinar, puedes escribir a un archivo lo que desees.

MATLAB cuenta con varias funciones para guardar una matriz a archivos de formato conocido, como Lotus, Excel, CSV (archivo de valores separados por comas). Sin embargo, para lo que deseas, tú debes escribir directamente los datos, para ello usa la función fprintf: primero escribe la cabecera y luego con un ciclo vas escribiendo los valores de la matriz (o matrices) que desees.

Suerte.

197
Matlab / Re: quitar ojos rojos en foto
« en: Viernes 31 de Octubre de 2008, 05:32 »
La parte más complicada es que investigues el método de corrección de ojos rojos. En cuanto a programar con MATLAB, si ya conoces algún lenguaje de programación no creo que se te complique, es bastante amigable :).

Probablemente algo de aquí te sea de ayuda:
http://www.tecnun.es/asignaturas/Inform ... m#Tecnicas

198
C/C++ / Re: Matrices C++ !!
« en: Jueves 30 de Octubre de 2008, 06:19 »
Fernando, el tamaño de los arrays que recibes los tienes en los parámetros nlhs y nrhs de la función mexFunction, con eso puedes entonces reservar la memoria que necesites para tus variables.

Puedes hacerlo con la función mallocde C, por ejemplo, hice un programa en el que enviaba bytes desde MATLAB, los pasé a una variable datos de tipo unsigned char de esta forma:
Código: Text
  1.  
  2.     // Convierte los parámetros recibidos
  3.     datos = (unsigned char*)malloc( sizeof( byte ) * nrhs );
  4.     for ( int i = 0; i < nrhs; i++ ) {
  5.         datos[ i ] = mxGetScalar( prhs[ i ] );
  6.     }
  7.  
  8.  

199
C/C++ / Re: Matrices C++ !!
« en: Miércoles 29 de Octubre de 2008, 05:45 »
Fernando, busca un libro o algún tutorial en la red sobre manejo dinámico de la memoria, leyendo y practicando seguro pronto "agarras el hilo" ;).

Cita de: "m0skit0"
Por cierto, eternity, ha dicho C++, no C.
¿Y no sirve también ese código en C++?

200
Matlab / Re: Serapar De Un Archivo De Audio La Señal De Voz
« en: Domingo 26 de Octubre de 2008, 00:29 »
Matlab solo es una herramienta para implementar algoritmos, filtros o métodos; todos ellos deben ser investigados antes.

Páginas: 1 ... 6 7 [8] 9 10 ... 41