Tengo una pregunta para leer una imagen bmp. ¿Cómo puedo obtener el valor de píxel (valores R, G, B) en una imagen bmp? ¿Alguien me puede ayudar a usar el lenguaje de programación C?Obtener el valor de píxel del archivo BMP
Respuesta
La manera más fácil sería encontrar una buena biblioteca de manipulación de imágenes para su plataforma elegida y usarla.
- LinuxImLib/GDK-Pixbuf (Gnome/GTK)/QT Image (KDE/Qt) debe ser capaz de hacer lo que necesita.
- Windows No estoy familiarizado con la biblioteca de sistema adecuada, pero un MSDN Search for "Bitmap" es probablemente un buen lugar para comenzar.
- Mac OSX Cocoa tiene algunas capacidades de manipulación de imágenes, consulte this article.
La manera más difícil sería abrir el archivo y realmente interpretar los datos binarios dentro. Para hacer eso necesitarás el BMP File Specification. Recomiendo probar el camino fácil primero.
Necesita estudiar el formato de archivo BMP. Es más fácil leer archivos BMP sin comprimir de 24 bits. Solo contienen un encabezado al principio y valores RGB de cada píxel.
Para comenzar, verifique el ejemplo de la imagen de mapa de bits 2x2 en http://en.wikipedia.org/wiki/BMP_file_format. Sigue los pasos a continuación.
- Cree la imagen 2x2 BMP que se muestra en la Wikipedia.
- Abra el archivo en modo binario con su programa C.
- Buscar en la posición de bytes 54.
- Lea 3 bytes.
Los bytes serían 0, 0 y 255 respectivamente. (No estoy seguro de si el orden es RGB. Lo he hecho hace mucho tiempo y creo que el orden no es RGB. Simplemente verifique esto.)
¡Tan simple como eso! Estudie el encabezado del BMP para comprender más sobre el formato.
Nota: puede que necesite tomar un byte extra para los valores alfa si su BMP tiene un canal alfa. En ese caso, la imagen sería image[pixelcount][4]
, y agregaría otra línea getc(streamIn)
para contener ese cuarto índice. Mi BMP resultó no necesitar eso.
// super-simplified BMP read algorithm to pull out RGB data
// read image for coloring scheme
int image[1024][3]; // first number here is 1024 pixels in my image, 3 is for RGB values
FILE *streamIn;
streamIn = fopen("./mybitmap.bmp", "r");
if (streamIn == (FILE *)0){
printf("File opening error ocurred. Exiting program.\n");
exit(0);
}
int byte;
int count = 0;
for(i=0;i<54;i++) byte = getc(streamIn); // strip out BMP header
for(i=0;i<1024;i++){ // foreach pixel
image[i][2] = getc(streamIn); // use BMP 24bit with no alpha channel
image[i][1] = getc(streamIn); // BMP uses BGR but we want RGB, grab byte-by-byte
image[i][0] = getc(streamIn); // reverse-order array indexing fixes RGB issue...
printf("pixel %d : [%d,%d,%d]\n",i+1,image[i][0],image[i][1],image[i][2]);
}
fclose(streamIn);
~ Locutus
- 1. Configuración de color de píxel del archivo BMP/JPG
- 2. ¿Cómo obtener el color del píxel? OpenGL
- 3. ¿Cómo crear una miniatura del archivo .BMP?
- 4. obtener color promedio de bmp
- 5. Obtener el color del píxel en su ubicación con pygame
- 6. cadenas JavaScript fuera del BMP
- 7. rmagick valor de color de píxel
- 8. Obtener el RGB de píxel con PIL
- 9. Obtener color de píxel de UIImage
- 10. Obtener el valor del mapa
- 11. leyendo un archivo .bmp en C++
- 12. ¿Cómo puedo leer los valores de píxel BMP en una matriz?
- 13. Actionscript 3: obtener objeto de visualización en el píxel
- 14. PIL cambia el valor de píxel al guardar
- 15. ImageMagick y Paperclip on Rails solo acepta el archivo bmp
- 16. Mostrar BMP en JLabel
- 17. Leer una imagen píxel por píxel en Ruby
- 18. ¿Cómo encontrar el valor de transparencia del canal alfa de un píxel en una imagen png?
- 19. Cómo obtener el valor booleano del objeto
- 20. jquery: obtener el valor del atributo personalizado
- 21. ¿Cómo obtener el valor MAX del diccionario?
- 22. ¿Cómo obtener el color de un píxel en una UIView?
- 23. Obtener el nombre del archivo MAKE del archivo MAKE
- 24. Cómo cambiar el valor del atributo del archivo SVG
- 25. ¿Cómo obtener el valor del atributo xml de root?
- 26. Eficiencia del uso de PNG vs. BMP con archivos grandes
- 27. jQuery: cómo obtener el "valor" del campo de entrada de carga de archivo
- 28. ¿Cómo obtener el valor del título del documento en látex?
- 29. Obtener la clave del diccionario utilizando el valor del diccionario
- 30. Obtener el último valor seleccionado del elemento de selección múltiple
¿No hay un trozo de cabecera que necesita para conseguir más allá antes de llegar a los datos de imagen? –
@Anon ¿Qué pasa si mi archivo es jpeg? – Kraken