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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  se pueden manejar imagenes en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: se pueden manejar imagenes en c  (Leído 8,059 veces)
Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
se pueden manejar imagenes en c
« en: 24 Abril 2014, 04:15 am »

bueno lo que quiero saber es si se puede trabajar con imagenes en c y si como pasar una imagen a una matriz para asi poder analizar pixel por pixel y saber su rgb.
bueno estuve investigando para ver como podria comparar dos imagenes ya sea iguales o parecidas y encontre un metodo en el que se trata de hacer una tabla en la imagen y mediente las coordenadas y posicion de la imagen compararlas pero no se comos e haria eso de la tabla en la imagen nose si se pan como se hace o si conocen algun otro metodo.
bueno tambien que instrucciones debria usar.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #1 en: 24 Abril 2014, 08:36 am »

Por supuesto que se pueden manejar... pero claro, "imagen" es un concepto muy amplio... cada formato tiene (o suele tener, depende del framework) su propia colección de funciones y sus propias característica.

C no viene preparado de forma nativa para gestionar imágenes... pero existe un amplio abanico de librerías que te permite trabajar con ellas: ImageMagic, CImg, OpenCV...



En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #2 en: 24 Abril 2014, 09:19 am »

Yo he usado openCV y, la verdad, se pueden cargar imágenes y demás... pero es una librería bastante grande y está orientada más a reconocimiento óptico y tratamiento digital de imágenes... eso no quita que no puedas crear una imagen de cero con tus propias rutinas... pero es un poco como matar moscas a cañonazos.

Para cosas sencillas es demasiado pesada.

El resto no las he usado... dí el salto a Qt y con ésta no me hace falta buscar librerías para este tipo de menesteres.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #3 en: 24 Abril 2014, 11:53 am »

Por supuesto, yo me hize una minilibrería de imagenes para prácticar (C++). Solo reconoce imagenes BMP pero bueno:
https://dl.dropboxusercontent.com/u/69551225/Libreria%20imagenes.rar

Creas dos objetos imagen y los comparas con el operador ==. Si da true esque son iguales.

Te dejo un listado de las funciones públicas

Código
  1. using namespace AMC; // Todas las funciones estan en el espacio de nombres AMC
  2.  
  3. Image* LeerBmp(const char*); // Devuelve un objeto Image a partir de un BMP
  4.  
  5. /** Class IMAGE **/
  6.  
  7. Image(Cord Dimensiones = Cord(0,0),RGB color = RGB::default_color()); // Constructor para crear una imagen desde cero
  8.  
  9. void trunc(Cord,RGB color = RGB::default_color()); // Fuerza un determinado tamanyo a la imagen, si la imagen es mas grande se colorearan los nuevos pixeles con lo que pongas en el segundo tamanyo.
  10.  
  11. int getLight() const; // Brillo actual de la imagen (entre -255 y 255), si no lo has cambiado será cero
  12. Cord getDimesions() const; // Retorna un objeto Cord con las dimensiones de la imagne
  13. RGB getPixel(Cord a) const; // Retorna el RGB de una posicion dada
  14. std::vector<RGB> getRow(unsigned int) const; // Retorna un vector con los pixeles de una fila
  15. std::vector<RGB> getColumn(unsigned int) const; // Retorna un vector con los pixeles de la columna
  16.  
  17. void setLight(int b); // Selecciona el brillo (entre -255 y 255)
  18. void setPixel(Cord a,RGB color) ; // Pinta un determinado pixel de un color
  19. void Negative(); // Invierte los colores de la imagen
  20.  
  21. bool operator==(const Image &a) const; // Las imagenes son iguales?
  22. bool operator!=(const Image &a) const; // Las imagenes son distintas?
  23.  
  24. /** Class Cord **/
  25.  
  26. // Representa un vector X,Y
  27.  
  28. Cord(unsigned int x,unsigned int y); // Constructor
  29.  
  30. unsigned int getX() const;
  31. unsigned int getY() const;
  32. void setX(unsigned int);
  33. void setY(unsigned int);
  34.  
  35. bool operator==(const Cord) const;
  36. bool operator!=(const Cord a) const;
  37.  
  38.  
  39. /** Class RGB **/
  40.  
  41. RGB(); // Construye el color negro
  42. RGB(int); // Construye un color a partir de su representación entera
  43. RGB(int r,int g,int b); // Construye un color a partir de sus valores de Rojo, verde y azul
  44. RGB(const RGB & r); // Copia
  45.  
  46. void setR(int r);
  47. void setG(int g);
  48. void setB(int b);
  49.  
  50. int getR() const {return R;}
  51. int getG() const {return G;}
  52. int getB() const {return B;}
  53. int getInt() const; // Representación de los tres colores en formato entero
  54.  
  55. operator int();
  56.  
  57. bool operator==(const RGB & a) const;
  58. bool operator==(int a) const;
  59. bool operator!=(const RGB & a) const;
  60. bool operator!=(int a) const;
« Última modificación: 24 Abril 2014, 11:55 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: se pueden manejar imagenes en c
« Respuesta #4 en: 24 Abril 2014, 18:45 pm »

gracias a todos por responder.
bueno creo que las usare haber que tal.
y bueno nose si me puedan ayudar con esto, quiero manejar imagenes jpeg y es que bueno me enseñaron un video que dura poco tiempo y no muestra el codigo completo pero donde muestra como abre la imagen en c y obtiene algo que se llama JPEG Standard and Quantization Tables de la imagen pero no se usan libereria externas solo usa estas.
y bueno una pregunta mas e estado investigando sobre todo este tema de manejo de imagen y me encontre un procedimiento para comparar imagenes donde consiste en literarmente partir la imgen como si fuera una tabla comomuestro  acontinuacion espeor que me entiendan, y bueno mediante cooordenadas usando los pixeles se ve si la otra imagen coinside entonces las imagenes son iguales y si varia un poco decir ue se parecen. bueno nose si me entendienron y espeor que me puedan ayudar.
**********
*   *    *   *
**********
*   *    *   *
**********
*   *    *    *
**********
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <ctype.h>
#include <string.h>
y bueno por eso quisiera saber si se pueden manejar imagenes en c sin librerias externas.
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #5 en: 24 Abril 2014, 19:11 pm »

la librería estándard de C no dispone de funciones para trabajar con imágenes.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #6 en: 24 Abril 2014, 21:46 pm »

y bueno por eso quisiera saber si se pueden manejar imagenes en c sin librerias externas.
Te lo acabo de demostrar, toda mi librería está hecha con la librería estándar. Sin librerías externas.

y bueno una pregunta mas e estado investigando sobre todo este tema de manejo de imagen y me encontre un procedimiento para comparar imagenes donde consiste en literarmente partir la imgen como si fuera una tabla comomuestro  acontinuacion espeor que me entiendan, y bueno mediante cooordenadas usando los pixeles se ve si la otra imagen coinside entonces las imagenes son iguales y si varia un poco decir ue se parecen. bueno nose si me entendienron y espeor que me puedan ayudar.
Pues claro, ese es el procedimiento que se usa siempre. Dos imagenes son iguales si tienen el mismo tamaño y el color de sus pixeles son iguales.

El problema es descodificar el archivo de la imagen para obtener la tabla. Algunos formatos son más sencillos que otros.

y bueno nose si me puedan ayudar con esto, quiero manejar imagenes jpeg y es que bueno me enseñaron un video que dura poco tiempo y no muestra el codigo completo pero donde muestra como abre la imagen en c y obtiene algo que se llama JPEG Standard and Quantization Tables de la imagen
JPEG es un formato chungo, intentalo mejor con BMP.

Aquí tienes una explicación de como funciona el BMP:
http://www.elotrolado.net/hilo_imagenes-bmp-destripandolas-a-fondo_1807836
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #7 en: 24 Abril 2014, 22:21 pm »

¿Es el mismo amchacon que el de este foro, osea tu?

¡Que fuerte!, me sacas varios años de experiencia xD
« Última modificación: 24 Abril 2014, 22:23 pm por leosansan » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: se pueden manejar imagenes en c
« Respuesta #8 en: 25 Abril 2014, 00:33 am »

¿Es el mismo amchacon que el de este foro, osea tu?

¡Que fuerte!, me sacas varios años de experiencia xD
Anda ya xD, las imagenes BMP son de los formatos más fáciles.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: se pueden manejar imagenes en c
« Respuesta #9 en: 25 Abril 2014, 04:19 am »

hola a todos.
buen gracias por contestar y bueno pues creo que revisare las librerias que me recomndaron y bueno creo que  me tendre que informar mas para poder obtener la tabla de jpeg por que se que si se puede optener y bueno pues creo que lo revisare desues por que por lastima ahorita no le puedo dedicar tiemp completo y bueno cmuhasgracias a todos por su ayuda un saludo.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines